@@ -56,7 +56,13 @@ protected function setUp(): void
56
56
$ entityTypeModel ->expects ($ this ->any ())->method ('retrieveAttributeFromCache ' )->willReturn ([]);
57
57
$ this ->context = $ this ->createPartialMock (
58
58
Product::class,
59
- ['retrieveProductTypeByName ' , 'retrieveMessageTemplate ' , 'getBehavior ' , 'getMultipleValueSeparator ' ]
59
+ [
60
+ 'retrieveProductTypeByName ' ,
61
+ 'retrieveMessageTemplate ' ,
62
+ 'getBehavior ' ,
63
+ 'getMultipleValueSeparator ' ,
64
+ 'getEmptyAttributeValueConstant '
65
+ ]
60
66
);
61
67
$ this ->context ->expects ($ this ->any ())->method ('retrieveProductTypeByName ' )->willReturn ($ entityTypeModel );
62
68
$ this ->context ->expects ($ this ->any ())->method ('retrieveMessageTemplate ' )->willReturn ('error message ' );
@@ -281,4 +287,38 @@ public function testInit()
281
287
$ this ->validatorTwo ->expects ($ this ->once ())->method ('init ' );
282
288
$ this ->validator ->init (null );
283
289
}
290
+
291
+ /**
292
+ * Test required multi-select attribute validation with array values.
293
+ *
294
+ * @return void
295
+ */
296
+ public function testIsRequiredAttributeValidWithMultiSelectArray ()
297
+ {
298
+ $ this ->context ->expects ($ this ->any ())->method ('getBehavior ' )->willReturn (Import::BEHAVIOR_APPEND );
299
+ $ this ->context ->expects ($ this ->any ())->method ('getEmptyAttributeValueConstant ' )->willReturn ('__EMPTY__ ' );
300
+ $ attrCode = 'required_multiselect_attribute ' ;
301
+ $ attributeParams = ['is_required ' => true ];
302
+ $ rowData = [
303
+ 'product_type ' => 'simple ' ,
304
+ 'required_multiselect_attribute ' => ['option1 ' , 'option2 ' ]
305
+ ];
306
+ $ result = $ this ->validator ->isRequiredAttributeValid ($ attrCode , $ attributeParams , $ rowData );
307
+ $ this ->assertTrue ($ result );
308
+ $ rowData ['required_multiselect_attribute ' ] = [];
309
+ $ result = $ this ->validator ->isRequiredAttributeValid ($ attrCode , $ attributeParams , $ rowData );
310
+ $ this ->assertFalse ($ result );
311
+ $ rowData ['required_multiselect_attribute ' ] = ['option1 ' , '' , 'option2 ' ];
312
+ $ result = $ this ->validator ->isRequiredAttributeValid ($ attrCode , $ attributeParams , $ rowData );
313
+ $ this ->assertTrue ($ result );
314
+ $ rowData ['required_multiselect_attribute ' ] = ['option1 ' , ' ' , 'option2 ' ];
315
+ $ result = $ this ->validator ->isRequiredAttributeValid ($ attrCode , $ attributeParams , $ rowData );
316
+ $ this ->assertTrue ($ result );
317
+ $ rowData ['required_multiselect_attribute ' ] = ['option1 ' , '__EMPTY__ ' , 'option2 ' ];
318
+ $ result = $ this ->validator ->isRequiredAttributeValid ($ attrCode , $ attributeParams , $ rowData );
319
+ $ this ->assertFalse ($ result );
320
+ unset($ rowData ['required_multiselect_attribute ' ]);
321
+ $ result = $ this ->validator ->isRequiredAttributeValid ($ attrCode , $ attributeParams , $ rowData );
322
+ $ this ->assertFalse ($ result );
323
+ }
284
324
}
0 commit comments