Skip to content

Commit e1cbfd0

Browse files
committed
2 parents 17a21e6 + 2f27811 commit e1cbfd0

18 files changed

Lines changed: 95 additions & 2 deletions

File tree

BundleProductDataExporter/Test/Integration/BundleProductTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ protected function setUp() : void
4848
* @magentoDbIsolation disabled
4949
* @magentoAppIsolation enabled
5050
* @return void
51+
* @dataProvider getBundleFixedProductOptionsDataProvider
5152
*/
5253
#[DataProvider('getBundleFixedProductOptionsDataProvider')]
5354
public function testBundleFixedProductOptions(array $item) : void
@@ -69,7 +70,7 @@ public function testBundleFixedProductOptions(array $item) : void
6970
* @magentoDataFixture Magento_BundleProductDataExporter::Test/_files/product_with_no_website_option.php
7071
* @magentoDbIsolation disabled
7172
* @magentoAppIsolation enabled
72-
*
73+
* @dataProvider getBundleFixedProductOptionsBeforeAndAfterPriceChangeDataProvider
7374
*/
7475
#[DataProvider('getBundleFixedProductOptionsBeforeAndAfterPriceChangeDataProvider')]
7576
public function testBundleFixedProductOptionsWithPriceDifferentThanDefault(
@@ -119,6 +120,7 @@ public function testBundleFixedProductOptionsWithPriceDifferentThanDefault(
119120
* @magentoDataFixture Magento/Bundle/_files/dynamic_bundle_product_with_special_price.php
120121
* @magentoDbIsolation disabled
121122
* @magentoAppIsolation enabled
123+
* @dataProvider getBundleDynamicProductOptionsDataProvider
122124
*/
123125
#[DataProvider('getBundleDynamicProductOptionsDataProvider')]
124126
public function testBundleDynamicProductOptions(array $item) : void

BundleProductDataExporter/Test/Integration/ExportBundleOptionWithParentTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ protected function setUp() : void
4747
*
4848
* @throws NoSuchEntityException
4949
* @throws Zend_Db_Statement_Exception
50+
* @dataProvider expectedBundleOptionsWithParentData
5051
*/
5152
#[DataProvider('expectedBundleOptionsWithParentData')]
5253
public function testExportBundleOptionsWithParentData(array $expectedSimpleProduct): void

CatalogDataExporter/Test/Integration/DownloadableProductsTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class DownloadableProductsTest extends AbstractProductTestHelper
3232
* @throws LocalizedException
3333
* @throws \Zend_Db_Statement_Exception
3434
* @throws \Throwable
35+
* @dataProvider expectedDownloadableAttributeDataProvider
3536
*/
3637
#[DataProvider('expectedDownloadableAttributeDataProvider')]
3738
public function testDownloadableProducts(array $expectedProductAttribute) : void

CatalogDataExporter/Test/Integration/GroupedProductsTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ protected function setUp() : void
4141
* @magentoDbIsolation disabled
4242
* @magentoAppIsolation enabled
4343
* @return void
44+
* @dataProvider getGroupedProductOptionsDataProvider
4445
*/
4546
#[DataProvider('getGroupedProductOptionsDataProvider')]
4647
public function testGroupedProductOptions(array $item) : void
@@ -62,6 +63,7 @@ public function testGroupedProductOptions(array $item) : void
6263
* @magentoDbIsolation disabled
6364
* @magentoAppIsolation enabled
6465
* @return void
66+
* @dataProvider getGroupedProductOptionsDataProvider
6567
*/
6668
#[DataProvider('getGroupedProductOptionsDataProvider')]
6769
public function testGroupedProductOptionsInMultipleWebsites(array $item) : void

CatalogDataExporter/Test/Integration/MoveCategoriesWithProductsTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ protected function setUp(): void
5252
* @return void
5353
* @throws NoSuchEntityException
5454
* @throws LocalizedException
55+
* @dataProvider getProductCategoriesDataProvider
5556
*/
5657
#[DataProvider('getProductCategoriesDataProvider')]
5758
public function testMoveCategoryToTopLevel(string $productSku, array $categoryData) : void

CatalogDataExporter/Test/Integration/ResubmitFailedFeedTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ protected function setUp(): void
9191
* @return void
9292
* @throws NoSuchEntityException
9393
* @throws \Zend_Db_Statement_Exception
94+
* @dataProvider productsWithStatusesDataProvider
9495
*/
9596
#[DataProvider('productsWithStatusesDataProvider')]
9697
public function testResubmitFailedFeed(array $expectedProducts) : void

CatalogDataExporter/Test/Integration/SimpleProductsWebsiteUnassignTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ protected function setUp(): void
5050
* @throws \Magento\Framework\Exception\InputException
5151
* @throws \Magento\Framework\Exception\StateException
5252
* @throws \Zend_Db_Statement_Exception
53+
* @dataProvider unassignWebsitesDataProvider
5354
*/
5455
#[DataProvider('unassignWebsitesDataProvider')]
5556
public function testSimpleProductsOnSave(array $testData) : void
@@ -91,6 +92,7 @@ public function testSimpleProductsOnSave(array $testData) : void
9192
* @return void
9293
* @throws NoSuchEntityException
9394
* @throws \Zend_Db_Statement_Exception
95+
* @dataProvider bulkUnassignWebsitesDataProvider
9496
*/
9597
#[DataProvider('bulkUnassignWebsitesDataProvider')]
9698
public function testSimpleProductsOnBulkUpdate(array $skus, array $websites, array $expected) : void

ConfigurableProductDataExporter/Test/Integration/ConfigurableProductsTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ public function testConfigurableProductsWithVirtualOptions() : void
124124
* @throws LocalizedException
125125
* @throws NoSuchEntityException
126126
* @throws Zend_Db_Statement_Exception
127+
* @dataProvider outOfStockProducts
127128
*/
128129
#[DataProvider('outOfStockProducts')]
129130
public function testConfigurableProductsWithOutOfStockChilds(array $outOfStockSkus) : void
@@ -169,6 +170,7 @@ public function testConfigurableProductsWithOutOfStockChilds(array $outOfStockSk
169170
* @throws LocalizedException
170171
* @throws NoSuchEntityException
171172
* @throws Zend_Db_Statement_Exception
173+
* @dataProvider outOfStockVirtualProducts
172174
*/
173175
#[DataProvider('outOfStockVirtualProducts')]
174176
public function testConfigurableProductsWithOutOfStockVirtualChilds(array $outOfStockSkus) : void

ConfigurationDataExporter/Test/Integration/ConfigExport/ConfigurationExportTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ protected function setUp(): void
5757
* @return void
5858
* @throws \Magento\Framework\Exception\LocalizedException
5959
* @magentoDbIsolation enabled
60+
* @dataProvider configExportDataProvider
6061
*/
6162
#[DataProvider('configExportDataProvider')]
6263
public function testConfigUpdateExport(array $configs, array $expected): void
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Magento_CustomizableOptionsDataExporter module
2+
3+
The `Magento_CustomizableOptionsDataExporter` module adds Adobe Commerce customizable options to the catalog product feed.
4+
5+
## Features
6+
7+
- Adds the `ac_customizable_options` product attribute to the `products` feed.
8+
- Exports selectable options such as drop-down, radio button, checkbox, and multiple-select options.
9+
- Exports shopper-input options such as text field, text area, file, and date options.
10+
- Reuses the option providers from `Magento_CatalogDataExporter`, preserving their store-view resolution, prices, and canonical option UIDs.
11+
- Registers the attribute as an opaque JSON `OBJECT` attribute, so consumers can process the payload without a catalog schema change.
12+
13+
## Exported attribute
14+
15+
The attribute is added only when the product has customizable options. Its value is a serialized JSON object with the following structure:
16+
17+
```json
18+
{
19+
"schemaVersion": 1,
20+
"selectable": [
21+
{
22+
"id": "...",
23+
"values": [
24+
{
25+
"id": "custom-option/..."
26+
}
27+
]
28+
}
29+
],
30+
"shopperInput": [
31+
{
32+
"id": "..."
33+
}
34+
]
35+
}
36+
```
37+
38+
The `selectable` collection mirrors the `optionsV2` product feed field, while `shopperInput` mirrors `shopperInputOptions`. Selectable value UIDs use the canonical `custom-option/...` format.

0 commit comments

Comments
 (0)