@@ -586,8 +586,55 @@ public function testIsRowValid()
586
586
'_type ' => 'configurable ' ,
587
587
'_product_websites ' => 'website_1 ' ,
588
588
];
589
+ // Checking that variations with duplicate sku are invalid
590
+ $ duplicateVariationSKU = 'configurableskuI22DuplicateVariation ' ;
591
+ $ duplicateVariationProduct = [
592
+ 'sku ' => $ duplicateVariationSKU ,
593
+ 'store_view_code ' => null ,
594
+ 'attribute_set_code ' => 'Default ' ,
595
+ 'product_type ' => 'configurable ' ,
596
+ 'name ' => 'Configurable Product with duplicate SKUs in variations ' ,
597
+ 'product_websites ' => 'website_1 ' ,
598
+ 'configurable_variation_labels ' => 'testattr2=Select Color, testattr3=Select Size ' ,
599
+ 'configurable_variations ' => 'sku=testconf2-attr2val1-testattr3v1, '
600
+ . 'testattr2=attr2val1, '
601
+ . 'testattr3=testattr3v1, '
602
+ . 'display=1|sku=testconf2-attr2val1-testattr3v1, '
603
+ . 'testattr2=attr2val1, '
604
+ . 'testattr3=testattr3v2, '
605
+ . 'display=0 ' ,
606
+ '_store ' => null ,
607
+ '_attribute_set ' => 'Default ' ,
608
+ '_type ' => 'configurable ' ,
609
+ '_product_websites ' => 'website_1 ' ,
610
+ ];
611
+ // Checking that variations with SKUs that are the same when interpreted as number,
612
+ // but different when interpreted as string are valid
613
+ $ nonDuplicateVariationSKU = 'configurableskuI22NonDuplicateVariation ' ;
614
+ $ nonDuplicateVariationProduct = [
615
+ 'sku ' => $ nonDuplicateVariationSKU ,
616
+ 'store_view_code ' => null ,
617
+ 'attribute_set_code ' => 'Default ' ,
618
+ 'product_type ' => 'configurable ' ,
619
+ 'name ' => 'Configurable Product with different SKUs in variations ' ,
620
+ 'product_websites ' => 'website_1 ' ,
621
+ 'configurable_variation_labels ' => 'testattr2=Select Color, testattr3=Select Size ' ,
622
+ 'configurable_variations ' => 'sku=1234.10, '
623
+ . 'testattr2=attr2val1, '
624
+ . 'testattr3=testattr3v1, '
625
+ . 'display=1|sku=1234.1, '
626
+ . 'testattr2=attr2val1, '
627
+ . 'testattr3=testattr3v2, '
628
+ . 'display=0 ' ,
629
+ '_store ' => null ,
630
+ '_attribute_set ' => 'Default ' ,
631
+ '_type ' => 'configurable ' ,
632
+ '_product_websites ' => 'website_1 ' ,
633
+ ];
589
634
$ bunch [] = $ badProduct ;
590
635
$ bunch [] = $ caseInsensitiveProduct ;
636
+ $ bunch [] = $ duplicateVariationProduct ;
637
+ $ bunch [] = $ nonDuplicateVariationProduct ;
591
638
// Set _attributes to avoid error in Magento\CatalogImportExport\Model\Import\Product\Type\AbstractType.
592
639
$ this ->setPropertyValue ($ this ->configurable , '_attributes ' , [
593
640
$ badProduct [\Magento \CatalogImportExport \Model \Import \Product::COL_ATTR_SET ] => [],
@@ -613,6 +660,12 @@ public function testIsRowValid()
613
660
if ($ rowData ['sku ' ] === $ caseInsensitiveSKU ) {
614
661
$ this ->assertTrue ($ result );
615
662
}
663
+ if ($ rowData ['sku ' ] === $ duplicateVariationSKU ) {
664
+ $ this ->assertFalse ($ result );
665
+ }
666
+ if ($ rowData ['sku ' ] === $ nonDuplicateVariationSKU ) {
667
+ $ this ->assertTrue ($ result );
668
+ }
616
669
}
617
670
}
618
671
0 commit comments