Skip to content

Commit 2c71a95

Browse files
committed
ACP2E-2840: It's possible to set non-unique values via product import
1 parent 5a85cff commit 2c71a95

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/ValidatorTest.php

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
use Magento\CatalogImportExport\Model\Import\Product;
1111
use Magento\CatalogImportExport\Model\Import\Product\Type\Simple;
12+
use Magento\CatalogImportExport\Model\Import\Product\UniqueAttributeValidator;
1213
use Magento\CatalogImportExport\Model\Import\Product\Validator;
1314
use Magento\CatalogImportExport\Model\Import\Product\Validator\Media;
1415
use Magento\CatalogImportExport\Model\Import\Product\Validator\Website;
@@ -38,6 +39,11 @@ class ValidatorTest extends TestCase
3839
/** @var Validator\Website|MockObject */
3940
protected $validatorTwo;
4041

42+
/**
43+
* @var UniqueAttributeValidator|MockObject
44+
*/
45+
private $uniqueAttributeValidator;
46+
4147
protected function setUp(): void
4248
{
4349
$entityTypeModel = $this->createPartialMock(
@@ -60,14 +66,16 @@ protected function setUp(): void
6066
Website::class,
6167
['init', 'isValid', 'getMessages']
6268
);
69+
$this->uniqueAttributeValidator = $this->createMock(UniqueAttributeValidator::class);
6370

6471
$this->validators = [$this->validatorOne, $this->validatorTwo];
6572
$this->objectManagerHelper = new ObjectManagerHelper($this);
6673
$this->validator = $this->objectManagerHelper->getObject(
6774
Validator::class,
6875
[
6976
'string' => new StringUtils(),
70-
'validators' => $this->validators
77+
'validators' => $this->validators,
78+
'uniqueAttributeValidator' => $this->uniqueAttributeValidator
7179
]
7280
);
7381
$this->validator->init($this->context);
@@ -79,10 +87,18 @@ protected function setUp(): void
7987
* @param array $rowData
8088
* @param bool $isValid
8189
* @param string $attrCode
90+
* @param bool $uniqueAttributeValidatorResult
8291
* @dataProvider attributeValidationProvider
8392
*/
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);
86102
$this->context->method('getMultipleValueSeparator')->willReturn(Product::PSEUDO_MULTI_LINE_SEPARATOR);
87103
$this->context->expects($this->any())->method('getBehavior')->willReturn($behavior);
88104
$result = $this->validator->isAttributeValid(
@@ -217,6 +233,14 @@ public function attributeValidationProvider()
217233
['product_type' => 'any', 'unique_attribute' => 'unique-value', Product::COL_SKU => 'sku-0'],
218234
true,
219235
'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
220244
]
221245
];
222246
}

0 commit comments

Comments
 (0)