Skip to content

Commit d139cf9

Browse files
committed
Fix bug 26449: Update unit test
1 parent 1e9895d commit d139cf9

File tree

1 file changed

+66
-2
lines changed
  • app/code/Magento/ConfigurableProduct/Test/Unit/Plugin/Model/ResourceModel

1 file changed

+66
-2
lines changed

app/code/Magento/ConfigurableProduct/Test/Unit/Plugin/Model/ResourceModel/ProductTest.php

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
use Magento\Catalog\Model\Product\Type;
1010
use Magento\ConfigurableProduct\Model\Product\Type\Configurable;
1111
use Magento\Framework\Indexer\ActionInterface;
12+
use Magento\Catalog\Api\ProductAttributeRepositoryInterface;
13+
use Magento\Framework\Api\SearchCriteriaBuilder;
14+
use Magento\Framework\Api\FilterBuilder;
1215

1316
class ProductTest extends \PHPUnit\Framework\TestCase
1417
{
@@ -31,18 +34,46 @@ class ProductTest extends \PHPUnit\Framework\TestCase
3134
* @var \Magento\ConfigurableProduct\Plugin\Model\ResourceModel\Product
3235
*/
3336
private $model;
37+
/**
38+
* @var ProductAttributeRepositoryInterface|\PHPUnit\Framework\MockObject\MockObject
39+
*/
40+
private $prdAttributeRepository;
41+
/**
42+
* @var SearchCriteriaBuilder|\PHPUnit\Framework\MockObject\MockObject
43+
*/
44+
private $searchCriteriaBuilder;
45+
/**
46+
* @var FilterBuilder|\PHPUnit\Framework\MockObject\MockObject
47+
*/
48+
private $filterBuilder;
3449

3550
public function setUp()
3651
{
3752
$this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
3853
$this->configurableMock = $this->createMock(Configurable::class);
3954
$this->actionMock = $this->createMock(ActionInterface::class);
55+
// $this->prdAttributeRepository = $this->createMock(ProductAttributeRepositoryInterface::class);
56+
$this->prdAttributeRepository = $this->getMockBuilder(ProductAttributeRepositoryInterface::class)
57+
->disableOriginalConstructor()
58+
->setMethods(['getList'])
59+
->getMockForAbstractClass();
60+
$this->searchCriteriaBuilder = $this->createPartialMock(
61+
SearchCriteriaBuilder::class,
62+
['addFilters', 'create']
63+
);
64+
$this->filterBuilder = $this->createPartialMock(
65+
FilterBuilder::class,
66+
['setField', 'setConditionType', 'setValue', 'create']
67+
);
4068

4169
$this->model = $this->objectManager->getObject(
4270
\Magento\ConfigurableProduct\Plugin\Model\ResourceModel\Product::class,
4371
[
4472
'configurable' => $this->configurableMock,
4573
'productIndexer' => $this->actionMock,
74+
'productAttributeRepository' => $this->prdAttributeRepository,
75+
'searchCriteriaBuilder' => $this->searchCriteriaBuilder,
76+
'filterBuilder' => $this->filterBuilder
4677
]
4778
);
4879
}
@@ -65,12 +96,45 @@ public function testBeforeSaveConfigurable()
6596
\Magento\ConfigurableProduct\Model\Product\Type\Configurable::class,
6697
['getSetAttributes']
6798
);
99+
100+
$extensionAttributes = $this->createPartialMock(
101+
\Magento\Framework\Api\ExtensionAttributesInterface::class,
102+
['getConfigurableProductOptions']
103+
);
104+
$option = $this->createPartialMock(
105+
\Magento\ConfigurableProduct\Model\Product\Type\Configurable\Attribute::class,
106+
['getAttributeId']
107+
);
108+
$extensionAttributes->expects($this->exactly(2))->method('getConfigurableProductOptions')
109+
->willReturn([$option]);
110+
$object->expects($this->once())->method('getExtensionAttributes')
111+
->willReturn($extensionAttributes);
112+
113+
$this->filterBuilder->expects($this->atLeastOnce())->method('setField')->willReturnSelf();
114+
$this->filterBuilder->expects($this->atLeastOnce())->method('setValue')->willReturnSelf();
115+
$this->filterBuilder->expects($this->atLeastOnce())->method('setConditionType')->willReturnSelf();
116+
$this->filterBuilder->expects($this->atLeastOnce())->method('create')->willReturnSelf();
117+
$searchCriteria = $this->createMock(\Magento\Framework\Api\SearchCriteria::class);
118+
$this->searchCriteriaBuilder->expects($this->once())->method('create')->willReturn($searchCriteria);
119+
120+
$searchResultMockClass = $this->createPartialMock(
121+
\Magento\Catalog\Model\ProductAttributeSearchResults::class,
122+
['getItems']
123+
);
124+
$this->prdAttributeRepository->expects($this->once())
125+
->method('getList')->with($searchCriteria)->willReturn($searchResultMockClass);
126+
$optionAttribute = $this->createPartialMock(
127+
\Magento\Catalog\Model\ResourceModel\Eav\Attribute::class,
128+
['getAttributeCode']
129+
);
130+
$searchResultMockClass->expects($this->once())->method('getItems')->willReturn([$optionAttribute]);
68131
$type->expects($this->once())->method('getSetAttributes')->with($object);
69132

70133
$object->expects($this->once())->method('getTypeId')->will($this->returnValue(Configurable::TYPE_CODE));
71134
$object->expects($this->once())->method('getTypeInstance')->will($this->returnValue($type));
72-
$object->expects($this->any())->method('getExtensionAttributes');
73-
$object->expects($this->any())->method('setData');
135+
$object->expects($this->once())->method('setData');
136+
$option->expects($this->once())->method('getAttributeId');
137+
$optionAttribute->expects($this->once())->method('getAttributeCode');
74138

75139
$this->model->beforeSave(
76140
$subject,

0 commit comments

Comments
 (0)