9
9
10
10
use Magento \CatalogImportExport \Model \Import \Product ;
11
11
use Magento \CatalogImportExport \Model \Import \Product \Type \Simple ;
12
+ use Magento \CatalogImportExport \Model \Import \Product \UniqueAttributeValidator ;
12
13
use Magento \CatalogImportExport \Model \Import \Product \Validator ;
13
14
use Magento \CatalogImportExport \Model \Import \Product \Validator \Media ;
14
15
use Magento \CatalogImportExport \Model \Import \Product \Validator \Website ;
@@ -38,6 +39,11 @@ class ValidatorTest extends TestCase
38
39
/** @var Validator\Website|MockObject */
39
40
protected $ validatorTwo ;
40
41
42
+ /**
43
+ * @var UniqueAttributeValidator|MockObject
44
+ */
45
+ private $ uniqueAttributeValidator ;
46
+
41
47
protected function setUp (): void
42
48
{
43
49
$ entityTypeModel = $ this ->createPartialMock (
@@ -60,14 +66,16 @@ protected function setUp(): void
60
66
Website::class,
61
67
['init ' , 'isValid ' , 'getMessages ' ]
62
68
);
69
+ $ this ->uniqueAttributeValidator = $ this ->createMock (UniqueAttributeValidator::class);
63
70
64
71
$ this ->validators = [$ this ->validatorOne , $ this ->validatorTwo ];
65
72
$ this ->objectManagerHelper = new ObjectManagerHelper ($ this );
66
73
$ this ->validator = $ this ->objectManagerHelper ->getObject (
67
74
Validator::class,
68
75
[
69
76
'string ' => new StringUtils (),
70
- 'validators ' => $ this ->validators
77
+ 'validators ' => $ this ->validators ,
78
+ 'uniqueAttributeValidator ' => $ this ->uniqueAttributeValidator
71
79
]
72
80
);
73
81
$ this ->validator ->init ($ this ->context );
@@ -79,10 +87,18 @@ protected function setUp(): void
79
87
* @param array $rowData
80
88
* @param bool $isValid
81
89
* @param string $attrCode
90
+ * @param bool $uniqueAttributeValidatorResult
82
91
* @dataProvider attributeValidationProvider
83
92
*/
84
- public function testAttributeValidation ($ behavior , $ attrParams , $ rowData , $ isValid , $ attrCode = 'attribute_code ' )
85
- {
93
+ public function testAttributeValidation (
94
+ string $ behavior ,
95
+ array $ attrParams ,
96
+ array $ rowData ,
97
+ bool $ isValid ,
98
+ string $ attrCode = 'attribute_code ' ,
99
+ bool $ uniqueAttributeValidatorResult = true
100
+ ) {
101
+ $ this ->uniqueAttributeValidator ->method ('isValid ' )->willReturn ($ uniqueAttributeValidatorResult );
86
102
$ this ->context ->method ('getMultipleValueSeparator ' )->willReturn (Product::PSEUDO_MULTI_LINE_SEPARATOR );
87
103
$ this ->context ->expects ($ this ->any ())->method ('getBehavior ' )->willReturn ($ behavior );
88
104
$ result = $ this ->validator ->isAttributeValid (
@@ -217,6 +233,14 @@ public function attributeValidationProvider()
217
233
['product_type ' => 'any ' , 'unique_attribute ' => 'unique-value ' , Product::COL_SKU => 'sku-0 ' ],
218
234
true ,
219
235
'unique_attribute '
236
+ ],
237
+ [
238
+ Import::BEHAVIOR_APPEND ,
239
+ ['is_required ' => true , 'type ' => 'varchar ' , 'is_unique ' => true ],
240
+ ['product_type ' => 'any ' , 'unique_attribute ' => 'unique-value ' , Product::COL_SKU => 'sku-0 ' ],
241
+ false ,
242
+ 'unique_attribute ' ,
243
+ false
220
244
]
221
245
];
222
246
}
0 commit comments