@@ -56,7 +56,7 @@ protected function setUp(): void
5656 $ entityTypeModel ->expects ($ this ->any ())->method ('retrieveAttributeFromCache ' )->willReturn ([]);
5757 $ this ->context = $ this ->createPartialMock (
5858 Product::class,
59- ['retrieveProductTypeByName ' , 'retrieveMessageTemplate ' , 'getBehavior ' , 'getMultipleValueSeparator ' ]
59+ ['retrieveProductTypeByName ' , 'retrieveMessageTemplate ' , 'getBehavior ' , 'getMultipleValueSeparator ' , ' getEmptyAttributeValueConstant ' ]
6060 );
6161 $ this ->context ->expects ($ this ->any ())->method ('retrieveProductTypeByName ' )->willReturn ($ entityTypeModel );
6262 $ this ->context ->expects ($ this ->any ())->method ('retrieveMessageTemplate ' )->willReturn ('error message ' );
@@ -281,4 +281,38 @@ public function testInit()
281281 $ this ->validatorTwo ->expects ($ this ->once ())->method ('init ' );
282282 $ this ->validator ->init (null );
283283 }
284+
285+ /**
286+ * Test required multi-select attribute validation with array values.
287+ *
288+ * @return void
289+ */
290+ public function testIsRequiredAttributeValidWithMultiSelectArray ()
291+ {
292+ $ this ->context ->expects ($ this ->any ())->method ('getBehavior ' )->willReturn (Import::BEHAVIOR_APPEND );
293+ $ this ->context ->expects ($ this ->any ())->method ('getEmptyAttributeValueConstant ' )->willReturn ('__EMPTY__ ' );
294+ $ attrCode = 'required_multiselect_attribute ' ;
295+ $ attributeParams = ['is_required ' => true ];
296+ $ rowData = [
297+ 'product_type ' => 'simple ' ,
298+ 'required_multiselect_attribute ' => ['option1 ' , 'option2 ' ]
299+ ];
300+ $ result = $ this ->validator ->isRequiredAttributeValid ($ attrCode , $ attributeParams , $ rowData );
301+ $ this ->assertTrue ($ result );
302+ $ rowData ['required_multiselect_attribute ' ] = [];
303+ $ result = $ this ->validator ->isRequiredAttributeValid ($ attrCode , $ attributeParams , $ rowData );
304+ $ this ->assertFalse ($ result );
305+ $ rowData ['required_multiselect_attribute ' ] = ['option1 ' , '' , 'option2 ' ];
306+ $ result = $ this ->validator ->isRequiredAttributeValid ($ attrCode , $ attributeParams , $ rowData );
307+ $ this ->assertTrue ($ result );
308+ $ rowData ['required_multiselect_attribute ' ] = ['option1 ' , ' ' , 'option2 ' ];
309+ $ result = $ this ->validator ->isRequiredAttributeValid ($ attrCode , $ attributeParams , $ rowData );
310+ $ this ->assertTrue ($ result );
311+ $ rowData ['required_multiselect_attribute ' ] = ['option1 ' , '__EMPTY__ ' , 'option2 ' ];
312+ $ result = $ this ->validator ->isRequiredAttributeValid ($ attrCode , $ attributeParams , $ rowData );
313+ $ this ->assertFalse ($ result );
314+ unset($ rowData ['required_multiselect_attribute ' ]);
315+ $ result = $ this ->validator ->isRequiredAttributeValid ($ attrCode , $ attributeParams , $ rowData );
316+ $ this ->assertFalse ($ result );
317+ }
284318}
0 commit comments