|
17 | 17 | use Magento\Directory\Model\RegionFactory;
|
18 | 18 | use Magento\Directory\Model\ResourceModel\Region\Collection;
|
19 | 19 | use Magento\Eav\Model\Config;
|
| 20 | +use Magento\Framework\Api\AttributeInterface; |
| 21 | +use Magento\Framework\Api\AttributeValue; |
20 | 22 | use Magento\Framework\Data\Collection\AbstractDb;
|
21 | 23 | use Magento\Framework\DataObject;
|
22 | 24 | use Magento\Framework\Model\Context;
|
@@ -438,6 +440,57 @@ public function getStreetFullDataProvider()
|
438 | 440 | ];
|
439 | 441 | }
|
440 | 442 |
|
| 443 | + /** |
| 444 | + * @return void |
| 445 | + */ |
| 446 | + public function testSetCustomerAttributes(): void |
| 447 | + { |
| 448 | + $model = $this->getMockBuilder(AbstractAddress::class) |
| 449 | + ->onlyMethods(['getCustomAttributesCodes']) |
| 450 | + ->disableOriginalConstructor() |
| 451 | + ->getMockForAbstractClass(); |
| 452 | + $customAttributeFactory = $this->createMock(\Magento\Customer\Model\AttributeFactory::class); |
| 453 | + $customAttributeFactory->method('create') |
| 454 | + ->willReturnCallback( |
| 455 | + function ($data) { |
| 456 | + return new AttributeValue($data); |
| 457 | + } |
| 458 | + ); |
| 459 | + $data = [ |
| 460 | + 'customer_attribute1' => new AttributeValue([ |
| 461 | + 'attribute_code' => 'customer_attribute1', |
| 462 | + 'value' => 'customer_attribute1_value' |
| 463 | + ]), |
| 464 | + 'customer_attribute2' => new AttributeValue([ |
| 465 | + 'attribute_code' => 'customer_attribute2', |
| 466 | + 'value' => ['customer_attribute2_value1', 'customer_attribute2_value2'] |
| 467 | + ]) |
| 468 | + ]; |
| 469 | + $model->method('getCustomAttributesCodes')->willReturn(array_keys($data)); |
| 470 | + $this->objectManager->setBackwardCompatibleProperty( |
| 471 | + $model, |
| 472 | + 'customAttributeFactory', |
| 473 | + $customAttributeFactory |
| 474 | + ); |
| 475 | + $model->setData('custom_attributes', $data); |
| 476 | + $this->assertEquals( |
| 477 | + [ |
| 478 | + [ |
| 479 | + 'attribute_code' => 'customer_attribute1', |
| 480 | + 'value' => 'customer_attribute1_value' |
| 481 | + ], |
| 482 | + [ |
| 483 | + 'attribute_code' => 'customer_attribute2', |
| 484 | + 'value' => "customer_attribute2_value1\ncustomer_attribute2_value2" |
| 485 | + ] |
| 486 | + ], |
| 487 | + array_map( |
| 488 | + fn ($attr) => ['attribute_code' => $attr->getAttributeCode(), 'value' => $attr->getValue()], |
| 489 | + $model->getCustomAttributes() |
| 490 | + ) |
| 491 | + ); |
| 492 | + } |
| 493 | + |
441 | 494 | protected function tearDown(): void
|
442 | 495 | {
|
443 | 496 | $this->objectManager->setBackwardCompatibleProperty(
|
|
0 commit comments