Skip to content

Commit 5226e2c

Browse files
author
Yu Tang
committed
MAGETWO-33660: Refactor Eav module to use mutable data object interfaces
1 parent f9a6bab commit 5226e2c

File tree

5 files changed

+53
-22
lines changed

5 files changed

+53
-22
lines changed

app/code/Magento/Catalog/Model/Entity/Attribute.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,9 @@ class Attribute extends \Magento\Eav\Model\Entity\Attribute
7979
* @param \Magento\Framework\Store\StoreManagerInterface $storeManager
8080
* @param \Magento\Eav\Model\Resource\Helper $resourceHelper
8181
* @param \Magento\Framework\Validator\UniversalFactory $universalFactory
82-
* @param \Magento\Eav\Api\Data\AttributeOptionDataBuilder $optionDataBuilder
82+
* @param \Magento\Eav\Api\Data\AttributeOptionInterfaceFactory $optionDataFactory
8383
* @param \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor
84+
* @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
8485
* @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
8586
* @param \Magento\Catalog\Model\Product\ReservedAttributeList $reservedAttributeList
8687
* @param \Magento\Framework\Locale\ResolverInterface $localeResolver
@@ -101,8 +102,9 @@ public function __construct(
101102
\Magento\Framework\Store\StoreManagerInterface $storeManager,
102103
\Magento\Eav\Model\Resource\Helper $resourceHelper,
103104
\Magento\Framework\Validator\UniversalFactory $universalFactory,
104-
\Magento\Eav\Api\Data\AttributeOptionDataBuilder $optionDataBuilder,
105+
\Magento\Eav\Api\Data\AttributeOptionInterfaceFactory $optionDataFactory,
105106
\Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor,
107+
\Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
106108
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
107109
\Magento\Catalog\Model\Product\ReservedAttributeList $reservedAttributeList,
108110
\Magento\Framework\Locale\ResolverInterface $localeResolver,
@@ -123,8 +125,9 @@ public function __construct(
123125
$storeManager,
124126
$resourceHelper,
125127
$universalFactory,
126-
$optionDataBuilder,
128+
$optionDataFactory,
127129
$dataObjectProcessor,
130+
$dataObjectHelper,
128131
$localeDate,
129132
$reservedAttributeList,
130133
$localeResolver,

app/code/Magento/Catalog/Model/Resource/Eav/Attribute.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,9 @@ class Attribute extends \Magento\Eav\Model\Entity\Attribute implements
9494
* @param \Magento\Framework\Store\StoreManagerInterface $storeManager
9595
* @param \Magento\Eav\Model\Resource\Helper $resourceHelper
9696
* @param \Magento\Framework\Validator\UniversalFactory $universalFactory
97-
* @param \Magento\Eav\Api\Data\AttributeOptionDataBuilder $optionDataBuilder
97+
* @param \Magento\Eav\Api\Data\AttributeOptionInterfaceFactory $optionDataFactory
9898
* @param \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor
99+
* @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
99100
* @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
100101
* @param \Magento\Catalog\Model\Product\ReservedAttributeList $reservedAttributeList
101102
* @param \Magento\Framework\Locale\ResolverInterface $localeResolver
@@ -119,8 +120,9 @@ public function __construct(
119120
\Magento\Framework\Store\StoreManagerInterface $storeManager,
120121
\Magento\Eav\Model\Resource\Helper $resourceHelper,
121122
\Magento\Framework\Validator\UniversalFactory $universalFactory,
122-
\Magento\Eav\Api\Data\AttributeOptionDataBuilder $optionDataBuilder,
123+
\Magento\Eav\Api\Data\AttributeOptionInterfaceFactory $optionDataFactory,
123124
\Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor,
125+
\Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
124126
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
125127
\Magento\Catalog\Model\Product\ReservedAttributeList $reservedAttributeList,
126128
\Magento\Framework\Locale\ResolverInterface $localeResolver,
@@ -147,8 +149,9 @@ public function __construct(
147149
$storeManager,
148150
$resourceHelper,
149151
$universalFactory,
150-
$optionDataBuilder,
152+
$optionDataFactory,
151153
$dataObjectProcessor,
154+
$dataObjectHelper,
152155
$localeDate,
153156
$reservedAttributeList,
154157
$localeResolver,

app/code/Magento/Eav/Model/Entity/Attribute.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,9 @@ class Attribute extends \Magento\Eav\Model\Entity\Attribute\AbstractAttribute im
7474
* @param \Magento\Framework\Store\StoreManagerInterface $storeManager
7575
* @param \Magento\Eav\Model\Resource\Helper $resourceHelper
7676
* @param \Magento\Framework\Validator\UniversalFactory $universalFactory
77-
* @param \Magento\Eav\Api\Data\AttributeOptionDataBuilder $optionDataBuilder
77+
* @param \Magento\Eav\Api\Data\AttributeOptionInterfaceFactory $optionDataFactory
7878
* @param \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor
79+
* @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
7980
* @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
8081
* @param \Magento\Catalog\Model\Product\ReservedAttributeList $reservedAttributeList
8182
* @param \Magento\Framework\Locale\ResolverInterface $localeResolver
@@ -95,8 +96,9 @@ public function __construct(
9596
\Magento\Framework\Store\StoreManagerInterface $storeManager,
9697
\Magento\Eav\Model\Resource\Helper $resourceHelper,
9798
\Magento\Framework\Validator\UniversalFactory $universalFactory,
98-
\Magento\Eav\Api\Data\AttributeOptionDataBuilder $optionDataBuilder,
99+
\Magento\Eav\Api\Data\AttributeOptionInterfaceFactory $optionDataFactory,
99100
\Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor,
101+
\Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
100102
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
101103
\Magento\Catalog\Model\Product\ReservedAttributeList $reservedAttributeList,
102104
\Magento\Framework\Locale\ResolverInterface $localeResolver,
@@ -115,8 +117,9 @@ public function __construct(
115117
$storeManager,
116118
$resourceHelper,
117119
$universalFactory,
118-
$optionDataBuilder,
120+
$optionDataFactory,
119121
$dataObjectProcessor,
122+
$dataObjectHelper,
120123
$resource,
121124
$resourceCollection,
122125
$data

app/code/Magento/Eav/Model/Entity/Attribute/AbstractAttribute.php

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,15 +102,20 @@ abstract class AbstractAttribute extends \Magento\Framework\Model\AbstractExtens
102102
protected $_universalFactory;
103103

104104
/**
105-
* @var \Magento\Eav\Api\Data\AttributeOptionDataBuilder
105+
* @var \Magento\Eav\Api\Data\AttributeOptionInterfaceFactory
106106
*/
107-
protected $optionDataBuilder;
107+
protected $optionDataFactory;
108108

109109
/**
110110
* @var \Magento\Framework\Reflection\DataObjectProcessor
111111
*/
112112
protected $dataObjectProcessor;
113113

114+
/**
115+
* @var \Magento\Framework\Api\DataObjectHelper
116+
*/
117+
protected $dataObjectHelper;
118+
114119
/**
115120
* @param \Magento\Framework\Model\Context $context
116121
* @param \Magento\Framework\Registry $registry
@@ -122,8 +127,9 @@ abstract class AbstractAttribute extends \Magento\Framework\Model\AbstractExtens
122127
* @param \Magento\Framework\Store\StoreManagerInterface $storeManager
123128
* @param \Magento\Eav\Model\Resource\Helper $resourceHelper
124129
* @param \Magento\Framework\Validator\UniversalFactory $universalFactory
125-
* @param \Magento\Eav\Api\Data\AttributeOptionDataBuilder $optionDataBuilder
130+
* @param \Magento\Eav\Api\Data\AttributeOptionInterfaceFactory $optionDataFactory
126131
* @param \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor
132+
* @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
127133
* @param \Magento\Framework\Model\Resource\AbstractResource $resource
128134
* @param \Magento\Framework\Data\Collection\Db $resourceCollection
129135
* @param array $data
@@ -140,8 +146,9 @@ public function __construct(
140146
\Magento\Framework\Store\StoreManagerInterface $storeManager,
141147
\Magento\Eav\Model\Resource\Helper $resourceHelper,
142148
\Magento\Framework\Validator\UniversalFactory $universalFactory,
143-
\Magento\Eav\Api\Data\AttributeOptionDataBuilder $optionDataBuilder,
149+
\Magento\Eav\Api\Data\AttributeOptionInterfaceFactory $optionDataFactory,
144150
\Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor,
151+
\Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
145152
\Magento\Framework\Model\Resource\AbstractResource $resource = null,
146153
\Magento\Framework\Data\Collection\Db $resourceCollection = null,
147154
array $data = []
@@ -161,8 +168,9 @@ public function __construct(
161168
$this->_storeManager = $storeManager;
162169
$this->_resourceHelper = $resourceHelper;
163170
$this->_universalFactory = $universalFactory;
164-
$this->optionDataBuilder = $optionDataBuilder;
171+
$this->optionDataFactory = $optionDataFactory;
165172
$this->dataObjectProcessor = $dataObjectProcessor;
173+
$this->dataObjectHelper = $dataObjectHelper;
166174
}
167175

168176
/**
@@ -1051,7 +1059,14 @@ protected function convertToObjects(array $options)
10511059
{
10521060
$dataObjects = [];
10531061
foreach ($options as $option) {
1054-
$dataObjects[] = $this->optionDataBuilder->populateWithArray($option)->create();
1062+
/** @var \Magento\Eav\Api\Data\AttributeOptionInterface $optionDataObject */
1063+
$optionDataObject = $this->optionDataFactory->create();
1064+
$this->dataObjectHelper->populateWithArray(
1065+
$optionDataObject,
1066+
$option,
1067+
'\Magento\Eav\Api\Data\AttributeOptionInterface'
1068+
);
1069+
$dataObjects[] = $optionDataObject;
10551070
}
10561071
return $dataObjects;
10571072
}

dev/tests/unit/testsuite/Magento/Eav/Model/Entity/Attribute/AbstractAttributeTest.php

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,28 +96,35 @@ public function testGetOptionWhenOptionsAreEmptyWithSource()
9696

9797
public function testConvertToObjects()
9898
{
99-
$dataBuilderMock = $this->getMock(
100-
'Magento\Eav\Api\Data\AttributeOptionDataBuilder',
101-
['populateWithArray', 'create'],
99+
$AttributeOptionMock = $this->getMock('\Magento\Eav\Api\Data\AttributeOptionInterface');
100+
$dataFactoryMock = $this->getMock(
101+
'Magento\Eav\Api\Data\AttributeOptionInterfaceFactory',
102+
['create'],
102103
[],
103104
'',
104105
false
105106
);
107+
$dataObjectHelperMock = $this->getMockBuilder('\Magento\Framework\Api\DataObjectHelper')
108+
->disableOriginalConstructor()
109+
->getMock();
106110
$objectManagerHelper = new \Magento\TestFramework\Helper\ObjectManager($this);
107111
$model = $objectManagerHelper->getObject(
108112
'\Magento\Catalog\Model\Entity\Attribute',
109113
[
110-
'optionDataBuilder' => $dataBuilderMock,
114+
'optionDataFactory' => $dataFactoryMock,
115+
'dataObjectHelper' => $dataObjectHelperMock,
111116
'data' => [
112117
\Magento\Eav\Api\Data\AttributeInterface::OPTIONS => [['some value']]
113118
]
114119

115120
]
116121
);
117-
$dataBuilderMock->expects($this->once())->method('populateWithArray')->with(['some value'])->willReturnSelf();
118-
$dataBuilderMock->expects($this->once())->method('create')->willReturn('Expected value');
122+
$dataObjectHelperMock->expects($this->once())->method('populateWithArray')
123+
->with($AttributeOptionMock, ['some value'], '\Magento\Eav\Api\Data\AttributeOptionInterface')
124+
->willReturnSelf();
125+
$dataFactoryMock->expects($this->once())->method('create')->willReturn($AttributeOptionMock);
119126

120-
$this->assertEquals(['Expected value'], $model->getOptions());
127+
$this->assertEquals([$AttributeOptionMock], $model->getOptions());
121128
}
122129

123130
public function testGetValidationRulesWhenRuleIsArray()

0 commit comments

Comments
 (0)