From 3b6401801e642016ff89317d116a0f7fb48611a3 Mon Sep 17 00:00:00 2001 From: Maksym Novik Date: Thu, 23 May 2019 13:43:15 +0300 Subject: [PATCH] Msi 2182 source entity expansion with pickup location attributes. If frontend name is empty, pickup location uses source regular name now. --- .../Mapper/CreateFromSource.php | 2 +- .../Mapper/PreProcessor/FrontendName.php | 33 +++++++++++++++ .../SourceValidatorChain/SetFrontendName.php | 40 ------------------- .../Integration/PickupLocation/MapperTest.php | 16 ++++++++ .../Magento/InventoryInStorePickup/etc/di.xml | 7 ++-- 5 files changed, 53 insertions(+), 45 deletions(-) create mode 100644 app/code/Magento/InventoryInStorePickup/Model/PickupLocation/Mapper/PreProcessor/FrontendName.php delete mode 100644 app/code/Magento/InventoryInStorePickup/Plugin/InventoryApi/SourceValidatorChain/SetFrontendName.php diff --git a/app/code/Magento/InventoryInStorePickup/Model/PickupLocation/Mapper/CreateFromSource.php b/app/code/Magento/InventoryInStorePickup/Model/PickupLocation/Mapper/CreateFromSource.php index 90a8a8af6706..2f91f5395ec1 100644 --- a/app/code/Magento/InventoryInStorePickup/Model/PickupLocation/Mapper/CreateFromSource.php +++ b/app/code/Magento/InventoryInStorePickup/Model/PickupLocation/Mapper/CreateFromSource.php @@ -67,7 +67,7 @@ public function execute(SourceInterface $source, array $map, array $preProcessor private function preProcessData(SourceInterface $source, array $data, array $preProcessors) { foreach ($preProcessors as $field => $processor) { - if (isset($data[$field])) { + if (array_key_exists($field, $data)) { $data[$field] = $processor->process($source, $data[$field]); } } diff --git a/app/code/Magento/InventoryInStorePickup/Model/PickupLocation/Mapper/PreProcessor/FrontendName.php b/app/code/Magento/InventoryInStorePickup/Model/PickupLocation/Mapper/PreProcessor/FrontendName.php new file mode 100644 index 000000000000..a4f1b8bc436c --- /dev/null +++ b/app/code/Magento/InventoryInStorePickup/Model/PickupLocation/Mapper/PreProcessor/FrontendName.php @@ -0,0 +1,33 @@ +getName(); + } + + return $value; + } +} diff --git a/app/code/Magento/InventoryInStorePickup/Plugin/InventoryApi/SourceValidatorChain/SetFrontendName.php b/app/code/Magento/InventoryInStorePickup/Plugin/InventoryApi/SourceValidatorChain/SetFrontendName.php deleted file mode 100644 index 2a11e5ac3c6a..000000000000 --- a/app/code/Magento/InventoryInStorePickup/Plugin/InventoryApi/SourceValidatorChain/SetFrontendName.php +++ /dev/null @@ -1,40 +0,0 @@ -getExtensionAttributes() === null) { - return; - } - - $frontendName = trim($source->getExtensionAttributes()->getFrontendName() ?? ''); - - if ($frontendName === '') { - $source->getExtensionAttributes()->setFrontendName($source->getName()); - if ($source instanceof DataObject) { - $source->setData('frontend_name', $source->getExtensionAttributes()->getFrontendName()); - } - } - } -} diff --git a/app/code/Magento/InventoryInStorePickup/Test/Integration/PickupLocation/MapperTest.php b/app/code/Magento/InventoryInStorePickup/Test/Integration/PickupLocation/MapperTest.php index ec353dd5179a..0481a4076523 100644 --- a/app/code/Magento/InventoryInStorePickup/Test/Integration/PickupLocation/MapperTest.php +++ b/app/code/Magento/InventoryInStorePickup/Test/Integration/PickupLocation/MapperTest.php @@ -120,6 +120,22 @@ public function testMapPickupLocation() $this->assertInstanceOf(PickupLocationExtensionInterface::class, $pickupLocation->getExtensionAttributes()); } + /** + * @magentoDataFixture ../../../../app/code/Magento/InventoryInStorePickup/Test/_files/pickup_location.php + * @throws + */ + public function testEmptyFrontendName() + { + $source = $this->sourceRepository->get($this->sourceCode); + $source->getExtensionAttributes()->setFrontendName(null); + + /** @var Mapper $mapper */ + $mapper = $this->objectManager->create(Mapper::class); + + $pickupLocation = $mapper->map($source); + $this->assertEquals($source->getName(), $pickupLocation->getName()); + } + /** * @return array */ diff --git a/app/code/Magento/InventoryInStorePickup/etc/di.xml b/app/code/Magento/InventoryInStorePickup/etc/di.xml index 63a9bb91cb68..b8abb4c70197 100644 --- a/app/code/Magento/InventoryInStorePickup/etc/di.xml +++ b/app/code/Magento/InventoryInStorePickup/etc/di.xml @@ -38,12 +38,11 @@ name description + + Magento\InventoryInStorePickup\Model\PickupLocation\Mapper\PreProcessor\FrontendName + - - -