|
67 | 67 | ->setDescription('Category 1.1 description.')
|
68 | 68 | ->save();
|
69 | 69 |
|
| 70 | +if (!function_exists('createTestProduct')) { |
| 71 | + /** |
| 72 | + * Create a test product |
| 73 | + * |
| 74 | + * @param $name |
| 75 | + * @param $sku |
| 76 | + * @param $modifier |
| 77 | + * @param $objectManager |
| 78 | + * @param $defaultAttributeSet |
| 79 | + * @param $categoryLinkManagement |
| 80 | + * @throws Exception |
| 81 | + */ |
| 82 | + function createTestProduct($name, $sku, $modifier, $objectManager, $defaultAttributeSet, $categoryLinkManagement) |
| 83 | + { |
| 84 | + /** @var $product \Magento\Catalog\Model\Product */ |
| 85 | + $product = $objectManager->create(\Magento\Catalog\Model\Product::class); |
| 86 | + $product->isObjectNew(true); |
| 87 | + $product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE) |
| 88 | + ->setAttributeSetId($defaultAttributeSet) |
| 89 | + ->setStoreId(1) |
| 90 | + ->setWebsiteIds([1]) |
| 91 | + ->setName($name) |
| 92 | + ->setSku($sku) |
| 93 | + ->setPrice(10) |
| 94 | + ->setWeight(18) |
| 95 | + ->setQuantityAndStockStatus(['qty' => 10, 'is_in_stock' => 1]) |
| 96 | + ->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH) |
| 97 | + ->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED); |
70 | 98 |
|
71 |
| -/** @var $product \Magento\Catalog\Model\Product */ |
72 |
| -$product = $objectManager->create(\Magento\Catalog\Model\Product::class); |
73 |
| -$product->isObjectNew(true); |
74 |
| -$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE) |
75 |
| - ->setAttributeSetId($defaultAttributeSet) |
76 |
| - ->setStoreId(1) |
77 |
| - ->setWebsiteIds([1]) |
78 |
| - ->setName('Simple Product') |
79 |
| - ->setSku('simple') |
80 |
| - ->setPrice(10) |
81 |
| - ->setWeight(18) |
82 |
| - ->setQuantityAndStockStatus(['qty' => 10, 'is_in_stock' => 1]) |
83 |
| - ->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH) |
84 |
| - ->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED) |
85 |
| - ->save(); |
| 99 | + if ($modifier) { |
| 100 | + $product = $modifier($product); |
| 101 | + } |
86 | 102 |
|
87 |
| -$categoryLinkManagement->assignProductToCategories( |
88 |
| - $product->getSku(), |
89 |
| - [2, 3] |
90 |
| -); |
| 103 | + $product->save(); |
91 | 104 |
|
92 |
| -$product = $objectManager->create(\Magento\Catalog\Model\Product::class); |
93 |
| -$product->isObjectNew(true); |
94 |
| -$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE) |
95 |
| - ->setAttributeSetId($defaultAttributeSet) |
96 |
| - ->setStoreId(1) |
97 |
| - ->setWebsiteIds([1]) |
98 |
| - ->setName('Simple Product Two') |
99 |
| - ->setSku('12345') // SKU intentionally contains digits only |
100 |
| - ->setPrice(45.67) |
101 |
| - ->setWeight(56) |
102 |
| - ->setQuantityAndStockStatus(['qty' => 10, 'is_in_stock' => 1]) |
103 |
| - ->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH) |
104 |
| - ->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED) |
105 |
| - ->save(); |
| 105 | + $categoryLinkManagement->assignProductToCategories( |
| 106 | + $product->getSku(), |
| 107 | + [2, 3] |
| 108 | + ); |
| 109 | + } |
| 110 | +} |
106 | 111 |
|
107 |
| -$categoryLinkManagement->assignProductToCategories( |
108 |
| - $product->getSku(), |
109 |
| - [2, 3] |
| 112 | +// Create simple in stock, visible and enabled product |
| 113 | +createTestProduct( |
| 114 | + 'Simple Product', |
| 115 | + 'simple', |
| 116 | + false, |
| 117 | + $objectManager, |
| 118 | + $defaultAttributeSet, |
| 119 | + $categoryLinkManagement |
110 | 120 | );
|
111 | 121 |
|
112 |
| -$product = $objectManager->create(\Magento\Catalog\Model\Product::class); |
113 |
| -$product->isObjectNew(true); |
114 |
| -$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE) |
115 |
| - ->setAttributeSetId($defaultAttributeSet) |
116 |
| - ->setStoreId(1) |
117 |
| - ->setWebsiteIds([1]) |
118 |
| - ->setName('Simple Product Not Visible On Storefront') |
119 |
| - ->setSku('simple-3') |
120 |
| - ->setPrice(15) |
121 |
| - ->setWeight(2) |
122 |
| - ->setQuantityAndStockStatus(['qty' => 10, 'is_in_stock' => 1]) |
123 |
| - ->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_NOT_VISIBLE) |
124 |
| - ->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED) |
125 |
| - ->save(); |
126 |
| - |
127 |
| -$categoryLinkManagement->assignProductToCategories( |
128 |
| - $product->getSku(), |
129 |
| - [2, 3] |
| 122 | +// Create same product as above with SKU as numbers |
| 123 | +createTestProduct( |
| 124 | + 'Simple Product Two', |
| 125 | + '12345', |
| 126 | + function (\Magento\Catalog\Model\Product $product) { |
| 127 | + $product->setPrice(45.67); |
| 128 | + $product->setWeight(56); |
| 129 | + return $product; |
| 130 | + }, |
| 131 | + $objectManager, |
| 132 | + $defaultAttributeSet, |
| 133 | + $categoryLinkManagement |
130 | 134 | );
|
131 | 135 |
|
132 |
| -/** @var $product \Magento\Catalog\Model\Product */ |
133 |
| -$product = $objectManager->create(\Magento\Catalog\Model\Product::class); |
134 |
| -$product->isObjectNew(true); |
135 |
| -$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE) |
136 |
| - ->setAttributeSetId($defaultAttributeSet) |
137 |
| - ->setStoreId(1) |
138 |
| - ->setWebsiteIds([1]) |
139 |
| - ->setName('Simple Product Three') |
140 |
| - ->setSku('simple-4') |
141 |
| - ->setPrice(10) |
142 |
| - ->setWeight(18) |
143 |
| - ->setQuantityAndStockStatus(['qty' => 10, 'is_in_stock' => 1]) |
144 |
| - ->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH) |
145 |
| - ->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED) |
146 |
| - ->save(); |
| 136 | +// Create a product not visible on store front |
| 137 | +createTestProduct( |
| 138 | + 'Not Visible on Storefront', |
| 139 | + 'not-visible-on-storefront', |
| 140 | + function (\Magento\Catalog\Model\Product $product) { |
| 141 | + $product->setPrice(15); |
| 142 | + $product->setWeight(2); |
| 143 | + $product->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_NOT_VISIBLE); |
| 144 | + return $product; |
| 145 | + }, |
| 146 | + $objectManager, |
| 147 | + $defaultAttributeSet, |
| 148 | + $categoryLinkManagement |
| 149 | +); |
147 | 150 |
|
148 |
| -$categoryLinkManagement->assignProductToCategories( |
149 |
| - $product->getSku(), |
150 |
| - [2, 3] |
| 151 | +// Create disabled product |
| 152 | +createTestProduct( |
| 153 | + 'Disabled Product', |
| 154 | + 'disabled-product', |
| 155 | + function (\Magento\Catalog\Model\Product $product) { |
| 156 | + $product->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED); |
| 157 | + return $product; |
| 158 | + }, |
| 159 | + $objectManager, |
| 160 | + $defaultAttributeSet, |
| 161 | + $categoryLinkManagement |
151 | 162 | );
|
0 commit comments