9 use Magento\Customer\Test\Page\Adminhtml\CustomerIndexEdit;
10 use Magento\ImportExport\Test\Fixture\ImportData;
11 use Magento\Mtf\Constraint\AbstractConstraint;
12 use Magento\Mtf\Fixture\FixtureFactory;
24 private $mappingKeys = [
25 'region' =>
'region_id' 33 private $importedFieldsKeys = [
50 private $mappingCountries = [
51 'US' =>
'United States' 59 private $customerIndexEdit;
66 private $fixtureFactory;
84 CustomerIndexEdit $customerIndexEdit,
85 FixtureFactory $fixtureFactory,
88 $this->customerIndexEdit = $customerIndexEdit;
89 $this->fixtureFactory = $fixtureFactory;
90 $this->
import = $import;
92 $resultArrays = $this->getPrepareAddresses();
94 \PHPUnit\Framework\Assert::assertEquals(
95 $resultArrays[
'pageData'],
96 $resultArrays[
'csvData'],
97 'Addresses from page and csv are not match.' 106 private function getPrepareAddresses()
108 $addressTemplate = ($this->
import->getBehavior() !==
'Delete Entities')
109 ? $this->fixtureFactory->createByCode(
'address', [
'dataset' =>
'US_address_1_without_email'])
111 $customers = $this->
import->getDataFieldConfig(
'import_file')[
'source']->getEntities();
112 $customerForm = $this->customerIndexEdit->getCustomerForm();
115 $resultAddressesArray = [];
117 $this->customerIndexEdit->open([
'id' =>
$customer->getId()]);
118 $customerForm->openTab(
'addresses');
119 $addresses = $customerForm->getTab(
'addresses')->getDataAddresses($addressTemplate);
127 $resultCsvArray = [];
128 if ($this->import->getBehavior() !==
'Delete Entities') {
129 $resultCsvArray = $this->getResultCsv();
131 return [
'pageData' => $resultAddressesArray,
'csvData' => $resultCsvArray];
139 private function getResultCsv()
141 $csvData = $this->
import->getDataFieldConfig(
'import_file')[
'source']->getCsv();
144 foreach (array_shift($csvData) as $csvKey) {
145 $csvKeys[] = isset($this->mappingKeys[$csvKey]) ? $this->mappingKeys[$csvKey] : $csvKey;
149 foreach ($csvData as $csvRowData) {
150 $csvRowData = array_combine($csvKeys, $csvRowData);
151 $csvRowData = $this->deleteWasteData($csvRowData);
152 if (isset($this->mappingCountries[$csvRowData[
'country_id']])) {
153 $csvRowData[
'country_id'] = $this->mappingCountries[$csvRowData[
'country_id']];
155 $resultCsvData[] = $csvRowData;
157 return $resultCsvData;
166 private function deleteWasteData(array $csvData)
168 $necessaryData = array_flip($this->importedFieldsKeys);
170 return array_intersect_key($csvData, $necessaryData);
180 return 'Imported customer addresses are correct.';
processAssert(CustomerIndexEdit $customerIndexEdit, FixtureFactory $fixtureFactory, ImportData $import)