/** * Test export method */ public function testExport() { $websiteCode = Address::COLUMN_WEBSITE; $emailCode = Address::COLUMN_EMAIL; $entityIdCode = Address::COLUMN_ADDRESS_ID; $expectedAttributes = []; /** @var $collection \Magento\Customer\Model\Resource\Address\Attribute\Collection */ $collection = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Customer\\Model\\Resource\\Address\\Attribute\\Collection'); /** @var $attribute \Magento\Customer\Model\Attribute */ foreach ($collection as $attribute) { $expectedAttributes[] = $attribute->getAttributeCode(); } // Get customer default addresses column name to customer attribute mapping array. $defaultAddressMap = ImportAddress::getDefaultAddressAttributeMapping(); $this->_model->setWriter(\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\ImportExport\\Model\\Export\\Adapter\\Csv')); $this->_model->setParameters([]); $data = $this->_csvToArray($this->_model->export(), $entityIdCode); $this->assertEquals(count($expectedAttributes), count(array_intersect($expectedAttributes, $data['header'])), 'Expected attribute codes were not exported'); $this->assertNotEmpty($data['data'], 'No data was exported'); /** @var $objectManager \Magento\TestFramework\ObjectManager */ $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); // Get addresses /** @var $customers \Magento\Customer\Model\Customer[] */ $customers = $objectManager->get('Magento\\Framework\\Registry')->registry('_fixture/Magento_ImportExport_Customers_Array'); foreach ($customers as $customer) { /** @var $address \Magento\Customer\Model\Address */ foreach ($customer->getAddresses() as $address) { // Check unique key $data['data'][$address->getId()][$websiteCode] = $this->_websites[$customer->getWebsiteId()]; $data['data'][$address->getId()][$emailCode] = $customer->getEmail(); $data['data'][$address->getId()][$entityIdCode] = $address->getId(); // Check by expected attributes foreach ($expectedAttributes as $code) { if (!in_array($code, $this->_model->getDisabledAttributes())) { $this->assertEquals($address->getData($code), $data['data'][$address->getId()][$code], 'Attribute "' . $code . '" is not equal'); } } // Check customer default addresses column name to customer attribute mapping array foreach ($defaultAddressMap as $exportCode => $code) { $this->assertEquals($address->getData($code), (int) $data['data'][$address->getId()][$exportCode], 'Attribute "' . $code . '" is not equal'); } } } }