コード例 #1
0
 /**
  * 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');
             }
         }
     }
 }