26 private $updateConfigurations;
31 private $objectManagerHelper;
41 private $productRepositoryMock;
46 private $variationHandlerMock;
55 $this->requestMock = $this->getMockBuilder(RequestInterface::class)
56 ->getMockForAbstractClass();
57 $this->productRepositoryMock = $this->getMockBuilder(ProductRepositoryInterface::class)
58 ->getMockForAbstractClass();
59 $this->variationHandlerMock = $this->getMockBuilder(VariationHandler::class)
60 ->disableOriginalConstructor()
62 $this->subjectMock = $this->getMockBuilder(ProductInitializationHelper::class)
63 ->disableOriginalConstructor()
66 $this->objectManagerHelper =
new ObjectManagerHelper($this);
67 $this->updateConfigurations = $this->objectManagerHelper->getObject(
68 UpdateConfigurations::class,
70 'request' => $this->requestMock,
71 'productRepository' => $this->productRepositoryMock,
72 'variationHandler' => $this->variationHandlerMock
82 private function getConfigurableMatrix()
90 'newProduct' =>
false,
92 'status' =>
'simple2_status',
93 'sku' =>
'simple2_sku',
94 'name' =>
'simple2_name',
96 'configurable_attribute' =>
'simple2_configurable_attribute',
98 'media_gallery' =>
'simple2_media_gallery',
99 'swatch_image' =>
'simple2_swatch_image',
100 'small_image' =>
'simple2_small_image',
101 'thumbnail' =>
'simple2_thumbnail',
102 'image' =>
'simple2_image',
103 'was_changed' =>
true,
106 'newProduct' =>
false,
109 'was_changed' =>
true,
112 'newProduct' =>
false,
114 'status' =>
'simple4_status',
115 'sku' =>
'simple2_sku',
116 'name' =>
'simple2_name',
123 public function testAfterInitialize()
126 $configurableMatrix = $this->getConfigurableMatrix();
129 'status' =>
'simple2_status',
130 'sku' =>
'simple2_sku',
131 'name' =>
'simple2_name',
133 'configurable_attribute' =>
'simple2_configurable_attribute',
135 'media_gallery' =>
'simple2_media_gallery',
136 'swatch_image' =>
'simple2_swatch_image',
137 'small_image' =>
'simple2_small_image',
138 'thumbnail' =>
'simple2_thumbnail',
139 'image' =>
'simple2_image' 142 'quantity_and_stock_status' => [
'qty' =>
'3']
147 'product2' => $this->
getProductMock($configurations[
'product2'],
true,
true),
148 'product3' => $this->
getProductMock($configurations[
'product3'],
false,
true),
151 $this->requestMock->expects(static::any())
156 [
'configurable-matrix-serialized',
"[]", json_encode($configurableMatrix)]
159 $this->variationHandlerMock->expects(static::once())
160 ->method(
'duplicateImagesForVariations')
161 ->with($configurations)
162 ->willReturn($configurations);
163 $this->productRepositoryMock->expects(static::any())
167 [
'product2',
false, 0,
false, $productMocks[
'product2']],
168 [
'product3',
false, 0,
false, $productMocks[
'product3']]
171 $this->variationHandlerMock->expects(static::any())
172 ->method(
'processMediaGallery')
175 [$productMocks[
'product2'], $configurations[
'product2'], $configurations[
'product2']],
176 [$productMocks[
'product3'], $configurations[
'product3'], $configurations[
'product3']]
180 $this->assertSame($productMock, $this->updateConfigurations->afterInitialize($this->subjectMock, $productMock));
190 protected function getProductMock(array $expectedData =
null, $hasDataChanges =
false, $wasChanged =
false)
192 $productMock = $this->getMockBuilder(Product::class)
193 ->disableOriginalConstructor()
196 if ($wasChanged !==
false) {
197 if ($expectedData !==
null) {
198 $productMock->expects(static::once())
200 ->with($expectedData)
204 $productMock->expects(static::any())
205 ->method(
'hasDataChanges')
206 ->willReturn($hasDataChanges);
207 $productMock->expects($hasDataChanges ? static::once() : static::never())
221 $this->requestMock->expects(static::any())
226 [
'configurable-matrix-serialized',
null,
''],
230 $this->variationHandlerMock->expects(static::once())
231 ->method(
'duplicateImagesForVariations')
235 $this->updateConfigurations->afterInitialize($this->subjectMock, $productMock);
237 $this->assertEmpty($productMock->getData());
testAfterInitializeEmptyMatrix()
getProductMock(array $expectedData=null, $hasDataChanges=false, $wasChanged=false)