Skip to content

Commit 88f5d67

Browse files
committed
AC-15051:[CE] PHPUnit 12: Upgrade Product Types related test cases
1 parent cf01abc commit 88f5d67

File tree

6 files changed

+101
-189
lines changed

6 files changed

+101
-189
lines changed

app/code/Magento/Bundle/Test/Unit/Helper/Catalog/Product/ConfigurationTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
use Magento\Framework\Pricing\Helper\Data;
2222
use Magento\Framework\Serialize\Serializer\Json;
2323
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
24-
use Magento\Catalog\Test\Unit\Helper\ItemTestHelper;
24+
use Magento\Wishlist\Test\Unit\Helper\ItemTestHelper;
2525
use Magento\Catalog\Test\Unit\Helper\ProductTestHelper;
2626
use Magento\Catalog\Test\Unit\Helper\OptionTestHelper;
2727
use PHPUnit\Framework\MockObject\MockObject;

app/code/Magento/Bundle/Test/Unit/Model/Product/CopyConstructor/BundleTest.php

Lines changed: 90 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -65,20 +65,39 @@ public function testBuildPositive()
6565
$product->expects($this->once())
6666
->method('getExtensionAttributes')
6767
->willReturn($extensionAttributesProduct);
68-
69-
// Use parent Link class - all setters work via setData()
70-
$productLink = $this->createPartialMock(Link::class, []);
71-
// Create options using partial mock - setProductLinks works via magic methods
72-
$firstOption = $this->createPartialMock(Option::class, []);
73-
$firstOption->setProductLinks([$productLink]);
74-
// setOptionId will be called by the code under test
75-
$secondOption = $this->createPartialMock(Option::class, []);
76-
$secondOption->setProductLinks([$productLink]);
77-
// setOptionId will be called by the code under test
78-
$bundleOptions = [
79-
$firstOption,
80-
$secondOption
68+
$bundleOptionsData = [
69+
[
70+
'option_id' => 1,
71+
'title' => 'Option 1',
72+
'product_links' => [
73+
[
74+
'option_id' => 1,
75+
'id' => 1,
76+
'selection_id' => 1,
77+
'sku' => 'sku-1'
78+
],
79+
]
80+
],
81+
[
82+
'option_id' => 2,
83+
'title' => 'Option 2',
84+
'product_links' => [
85+
[
86+
'option_id' => 2,
87+
'id' => 2,
88+
'selection_id' => 2,
89+
'sku' => 'sku-2'
90+
]
91+
]
92+
]
8193
];
94+
$bundleOptions = array_map(
95+
fn ($optionData) => $this->createOptionMock(
96+
[...$optionData, 'product_links' => array_map($this->createLinkMock(...), $optionData['product_links'])]
97+
),
98+
$bundleOptionsData
99+
);
100+
82101
// Configure test helper with setter method
83102
$extensionAttributesProduct->setBundleProductOptions($bundleOptions);
84103

@@ -90,8 +109,65 @@ public function testBuildPositive()
90109
->method('getExtensionAttributes')
91110
->willReturn($extensionAttributesDuplicate);
92111
// Test helper doesn't need mock expectations - setBundleProductOptions will be called by code under test
93-
94112
$this->model->build($product, $duplicate);
113+
114+
// Capture the cloned options after the build method runs
115+
$bundleOptionsClone = $extensionAttributesDuplicate->getBundleProductOptions();
116+
$this->assertNotEmpty($bundleOptionsClone, 'Bundle options should be set on duplicate product');
117+
118+
foreach ($bundleOptionsData as $key => $optionData) {
119+
$bundleOption = $bundleOptions[$key];
120+
$bundleOptionClone = $bundleOptionsClone[$key];
121+
122+
$this->assertEquals($optionData['option_id'], $bundleOption->getOptionId());
123+
$this->assertEquals($optionData['title'], $bundleOption->getTitle());
124+
125+
$this->assertNotEquals($bundleOption, $bundleOptionClone);
126+
127+
$this->assertNull($bundleOptionClone->getOptionId());
128+
$this->assertEquals($optionData['title'], $bundleOptionClone->getTitle());
129+
130+
foreach ($optionData['product_links'] as $productLinkKey => $productLinkData) {
131+
$productLink = $bundleOption->getProductLinks()[$productLinkKey];
132+
$productLinkClone = $bundleOptionClone->getProductLinks()[$productLinkKey];
133+
134+
$this->assertEquals($productLinkData['option_id'], $productLink->getOptionId());
135+
$this->assertEquals($productLinkData['id'], $productLink->getId());
136+
$this->assertEquals($productLinkData['selection_id'], $productLink->getSelectionId());
137+
$this->assertEquals($productLinkData['sku'], $productLink->getSku());
138+
139+
$this->assertNotEquals($productLink, $productLinkClone);
140+
141+
$this->assertNull($productLinkClone->getId());
142+
$this->assertNull($productLinkClone->getOptionId());
143+
$this->assertNull($productLinkClone->getSelectionId());
144+
$this->assertEquals($productLinkData['sku'], $productLinkClone->getSku());
145+
}
146+
}
147+
}
148+
149+
/**
150+
* @param array $data
151+
* @return Option
152+
* @throws \PHPUnit\Framework\MockObject\Exception
153+
*/
154+
private function createOptionMock(array $data): Option
155+
{
156+
$option = $this->createPartialMock(Option::class, []);
157+
$option->addData($data);
158+
return $option;
159+
}
160+
161+
/**
162+
* @param array $data
163+
* @return Link
164+
* @throws \PHPUnit\Framework\MockObject\Exception
165+
*/
166+
private function createLinkMock(array $data): Link
167+
{
168+
$productLink = $this->createPartialMock(Link::class, []);
169+
$productLink->addData($data);
170+
return $productLink;
95171
}
96172

97173
/**

app/code/Magento/BundleImportExport/Test/Unit/Helper/TypeInstanceTestHelper.php

Lines changed: 0 additions & 104 deletions
This file was deleted.

app/code/Magento/BundleImportExport/Test/Unit/Model/Export/Product/RowCustomizerTest.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
use Magento\Framework\App\ScopeInterface;
1616
use Magento\Framework\App\ScopeResolverInterface;
1717
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
18-
use Magento\BundleImportExport\Test\Unit\Helper\TypeInstanceTestHelper;
1918
use PHPUnit\Framework\MockObject\MockObject;
2019
use PHPUnit\Framework\TestCase;
2120

@@ -130,7 +129,15 @@ protected function setUp(): void
130129
$this->selectionsCollection->method('getItems')->willReturn([$this->selection]);
131130
$this->option->setData('selections', [$this->selection]);
132131
$this->product->setSelectionsCollection($this->selectionsCollection);
133-
$typeInstance = new TypeInstanceTestHelper($this->optionsCollection, $this->selectionsCollection, [1]);
132+
// Use createPartialMock instead of TypeInstanceTestHelper
133+
$typeInstance = $this->createPartialMock(
134+
\Magento\Bundle\Model\Product\Type::class,
135+
['getOptionsCollection', 'getSelectionsCollection', 'getOptionsIds', 'setStoreFilter']
136+
);
137+
$typeInstance->method('getOptionsCollection')->willReturn($this->optionsCollection);
138+
$typeInstance->method('getSelectionsCollection')->willReturn($this->selectionsCollection);
139+
$typeInstance->method('getOptionsIds')->willReturn([1]);
140+
$typeInstance->method('setStoreFilter')->willReturnSelf();
134141
$this->product->setTypeInstance($typeInstance);
135142
$this->product->setSku(1);
136143
$this->productResourceCollection->method('addAttributeToFilter')->willReturnSelf();

app/code/Magento/Catalog/Test/Unit/Helper/ItemTestHelper.php

Lines changed: 0 additions & 67 deletions
This file was deleted.

app/code/Magento/GroupedProduct/Test/Unit/Helper/Product/Configuration/Plugin/GroupedTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public function testAroundGetOptionsGroupedProductWithAssociated()
9393
\Magento\GroupedProduct\Model\Product\Type\Grouped::TYPE_CODE
9494
);
9595

96-
$quantityItemMock = new \Magento\Catalog\Test\Unit\Helper\ItemTestHelper();
96+
$quantityItemMock = new \Magento\Wishlist\Test\Unit\Helper\ItemTestHelper();
9797
$quantityItemMock->setValue(1);
9898

9999
$this->itemMock->expects(

0 commit comments

Comments
 (0)