Example #1
0
 /**
  * @param array $addressData
  * @param Mage_Customer_Model_Address|null $newAddress
  * @param Mage_Customer_Model_Address|null $existingAddress
  * @param array $addressCollection
  * @param bool $dataChanged
  * @param bool $expectedDataChange
  * @dataProvider addressesDataProvider
  */
 public function testPrepareCustomerAddressForSave(array $addressData, $newAddress, $existingAddress, array $addressCollection, $dataChanged, $expectedDataChange)
 {
     $this->_customer->setDataChanges($dataChanged);
     $this->_customer->expects($this->any())->method('getId')->will($this->returnValue(1));
     $this->_customer->expects($this->once())->method('getAddressesCollection')->will($this->returnValue($addressCollection));
     if ($newAddress) {
         // Check that customer_id is set for new addresses
         $newAddress->expects($this->once())->method('setCustomerId')->with(1);
         // Check that new address is added to customer address collection
         $this->_customer->expects($this->once())->method('addAddress');
         // Check that new address is not deleted
         $newAddress->expects($this->never())->method('setData')->with('_deleted', true);
     }
     // Check that address loaded from customer address collection
     if ($existingAddress && $addressData) {
         $this->_customer->expects($this->once())->method('getAddressItemById')->with($existingAddress->getId())->will($this->returnValue($existingAddress));
     }
     // Check that new data is added
     $hasExistingAddress = false;
     foreach ($addressData as $data) {
         if (array_key_exists('entity_id', $addressData)) {
             unset($data['entity_id']);
             $existingAddress->expects($this->once())->method('addData')->with($data);
             $hasExistingAddress = true;
         } elseif ($newAddress) {
             $newAddress->expects($this->once())->method('addData')->with($data);
         }
     }
     // Check that addresses is deleted
     if (in_array($existingAddress, $addressCollection) && !$hasExistingAddress) {
         $existingAddress->expects($this->atLeastOnce())->method('setData')->with('_deleted', true);
     }
     $this->assertInstanceOf('Mage_Customer_Model_Customer', $this->_service->update(1, array(), $addressData), 'Incorrect instance returned');
     $this->assertEquals($expectedDataChange, $this->_customer->hasDataChanges(), 'Customer change data status is incorrect');
 }