Skip to content

Commit 8df9f02

Browse files
MAGETWO-96007: Customer address issue when creating or updating via API
1 parent 16731a0 commit 8df9f02

File tree

1 file changed

+41
-22
lines changed

1 file changed

+41
-22
lines changed

dev/tests/integration/testsuite/Magento/Customer/Model/ResourceModel/CustomerRepositoryTest.php

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,6 @@ public function testUpdateCustomerPreserveAllAddresses()
294294
$customerId = 1;
295295
$customer = $this->customerRepository->getById($customerId);
296296
$customerDetails = $customer->__toArray();
297-
$defaultBilling = $customerDetails['default_billing'];
298-
$defaultShipping = $customerDetails['default_shipping'];
299297
$newCustomerEntity = $this->customerFactory->create();
300298
$this->dataObjectHelper->populateWithArray(
301299
$newCustomerEntity,
@@ -307,19 +305,8 @@ public function testUpdateCustomerPreserveAllAddresses()
307305
$this->customerRepository->save($newCustomerEntity);
308306

309307
$newCustomerDetails = $this->customerRepository->getById($customerId);
310-
$newCustomerArray = $newCustomerDetails->__toArray();
311308
//Verify that old addresses are still present
312309
$this->assertEquals(2, count($newCustomerDetails->getAddresses()));
313-
$this->assertEquals(
314-
$defaultBilling,
315-
$newCustomerArray['default_billing'],
316-
"Default billing invalid value"
317-
);
318-
$this->assertEquals(
319-
$defaultShipping,
320-
$newCustomerArray['default_shipping'],
321-
"Default shipping invalid value"
322-
);
323310
}
324311

325312
/**
@@ -345,19 +332,51 @@ public function testUpdateCustomerDeleteAllAddressesWithEmptyArray()
345332
$this->customerRepository->save($newCustomerEntity);
346333

347334
$newCustomerDetails = $this->customerRepository->getById($customerId);
348-
$newCustomerArray = $newCustomerDetails->__toArray();
349335
//Verify that old addresses are removed
350336
$this->assertEquals(0, count($newCustomerDetails->getAddresses()));
351-
$this->assertEquals(
352-
$newCustomerArray['default_billing'],
353-
null,
354-
"Default billing invalid value"
337+
}
338+
339+
/**
340+
* Test customer update with new address
341+
*
342+
* @magentoAppArea frontend
343+
* @magentoDataFixture Magento/Customer/_files/customer.php
344+
* @magentoDataFixture Magento/Customer/_files/customer_two_addresses.php
345+
*/
346+
public function testUpdateCustomerWithNewAddress()
347+
{
348+
$customerId = 1;
349+
$customer = $this->customerRepository->getById($customerId);
350+
$customerDetails = $customer->__toArray();
351+
unset($customerDetails['default_billing']);
352+
unset($customerDetails['default_shipping']);
353+
354+
$beforeSaveCustomer = $this->customerFactory->create();
355+
$this->dataObjectHelper->populateWithArray(
356+
$beforeSaveCustomer,
357+
$customerDetails,
358+
CustomerInterface::class
355359
);
356-
$this->assertEquals(
357-
$newCustomerArray['default_shipping'],
358-
null,
359-
"Default shipping invalid value"
360+
361+
$addresses = $customer->getAddresses();
362+
$beforeSaveAddress = $addresses[0]->__toArray();
363+
unset($beforeSaveAddress['id']);
364+
$newAddressDataObject = $this->addressFactory->create();
365+
$this->dataObjectHelper->populateWithArray(
366+
$newAddressDataObject,
367+
$beforeSaveAddress,
368+
AddressInterface::class
360369
);
370+
371+
$beforeSaveCustomer->setAddresses([$newAddressDataObject]);
372+
$this->customerRepository->save($beforeSaveCustomer);
373+
374+
$newCustomer = $this->customerRepository->getById($customerId);
375+
$newCustomerAddresses = $newCustomer->getAddresses();
376+
$addressId = $newCustomerAddresses[0]->getId();
377+
378+
$this->assertEquals($newCustomer->getDefaultBilling(), $addressId, "Default billing invalid value");
379+
$this->assertEquals($newCustomer->getDefaultShipping(), $addressId, "Default shipping invalid value");
361380
}
362381

363382
/**

0 commit comments

Comments
 (0)