Skip to content

Commit bed9b71

Browse files
committed
ACPT-1451: Fix functional tests failures
1 parent bf19949 commit bed9b71

File tree

1 file changed

+15
-28
lines changed

1 file changed

+15
-28
lines changed

app/code/Magento/SalesRule/Model/ResourceModel/Rule/Collection.php

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,9 @@
77
namespace Magento\SalesRule\Model\ResourceModel\Rule;
88

99
use Magento\Framework\DB\Select;
10-
use Magento\Framework\EntityManager\MetadataPool;
11-
use Magento\Framework\Model\AbstractExtensibleModel;
1210
use Magento\Framework\Serialize\Serializer\Json;
1311
use Magento\Quote\Model\Quote\Address;
1412
use Magento\SalesRule\Api\Data\CouponInterface;
15-
use Magento\SalesRule\Api\Data\RuleInterface;
1613
use Magento\SalesRule\Model\Coupon;
1714
use Magento\SalesRule\Model\Rule;
1815

@@ -80,16 +77,12 @@ public function __construct(
8077
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $date,
8178
\Magento\Framework\DB\Adapter\AdapterInterface $connection = null,
8279
\Magento\Framework\Model\ResourceModel\Db\AbstractDb $resource = null,
83-
Json $serializer = null,
84-
MetadataPool $metadataPool = null
80+
Json $serializer = null
8581
) {
8682
parent::__construct($entityFactory, $logger, $fetchStrategy, $eventManager, $connection, $resource);
8783
$this->_date = $date;
8884
$this->serializer = $serializer ?: \Magento\Framework\App\ObjectManager::getInstance()->get(Json::class);
89-
$metadataPool = $metadataPool ?:
90-
\Magento\Framework\App\ObjectManager::getInstance()->get(MetadataPool::class);
9185
$this->_associatedEntitiesMap = $this->getAssociatedEntitiesMap();
92-
$this->_setIdFieldName($metadataPool->getMetadata(RuleInterface::class)->getLinkField());
9386
}
9487

9588
/**
@@ -120,35 +113,29 @@ protected function mapAssociatedEntities($entityType, $objectField)
120113

121114
$entityInfo = $this->_getAssociatedEntityInfo($entityType);
122115
$ruleIdField = $entityInfo['rule_id_field'];
123-
$entityIds = $this->getColumnValues($ruleIdField);
116+
117+
$items = [];
118+
foreach ($this->getItems() as $item) {
119+
$items[$item->getData($ruleIdField)] = $item;
120+
}
124121

125122
$select = $this->getConnection()->select()->from(
126123
$this->getTable($entityInfo['associations_table'])
127124
)->where(
128125
$ruleIdField . ' IN (?)',
129-
$entityIds
126+
array_keys($items)
130127
);
131128

132129
$associatedEntities = $this->getConnection()->fetchAll($select);
133-
$ruleIdFieldName = $this->getIdFieldName();
134-
if (empty($this->getIdFieldName()) && $this->getNewEmptyItem() instanceof AbstractExtensibleModel)
135-
{
136-
/** @var AbstractExtensibleModel $item */
137-
$ruleIdFieldName = $this->getNewEmptyItem()->getIdFieldName();
130+
131+
$dataToAdd = [];
132+
foreach ($associatedEntities as $associatedEntity) {
133+
//group data
134+
$dataToAdd[$associatedEntity[$ruleIdField]][] = $associatedEntity[$entityInfo['entity_id_field']];
135+
}
136+
foreach ($dataToAdd as $id => $value) {
137+
$items[$id]->setData($objectField, $value);
138138
}
139-
array_map(
140-
function ($associatedEntity) use ($entityInfo, $ruleIdField, $objectField, $ruleIdFieldName) {
141-
if ($ruleIdField === $ruleIdFieldName) {
142-
$item = $this->getItemById($associatedEntity[$ruleIdField]);
143-
} else {
144-
$item = $this->getItemByColumnValue($ruleIdField, $associatedEntity[$ruleIdField]);
145-
}
146-
$itemAssociatedValue = $item->getData($objectField) ?? [];
147-
$itemAssociatedValue[] = $associatedEntity[$entityInfo['entity_id_field']];
148-
$item->setData($objectField, $itemAssociatedValue);
149-
},
150-
$associatedEntities
151-
);
152139
}
153140

154141
/**

0 commit comments

Comments
 (0)