@@ -56,7 +56,13 @@ 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+ [
60+ 'retrieveProductTypeByName ' ,
61+ 'retrieveMessageTemplate ' ,
62+ 'getBehavior ' ,
63+ 'getMultipleValueSeparator ' ,
64+ 'getEmptyAttributeValueConstant '
65+ ]
6066 );
6167 $ this ->context ->expects ($ this ->any ())->method ('retrieveProductTypeByName ' )->willReturn ($ entityTypeModel );
6268 $ this ->context ->expects ($ this ->any ())->method ('retrieveMessageTemplate ' )->willReturn ('error message ' );
@@ -281,4 +287,38 @@ public function testInit()
281287 $ this ->validatorTwo ->expects ($ this ->once ())->method ('init ' );
282288 $ this ->validator ->init (null );
283289 }
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+ }
284324}
0 commit comments