/** * `push()` function is taking a `ContactCollection` object as argument. If * contact update failed exception will be catched. Result will be array: * * array['fail'] = ContactCollection(); * */ public function testPushContactsUpdateFail() { $data = array('Id' => 1, 'Email' => '*****@*****.**', 'FirstName' => 'FirstName1'); $failedContact = new Contact(); $failedContact->setIsFailed(); $i = $this->getMockBuilder('\\Wildsurfer\\Infusionsoft\\Sync')->disableOriginalConstructor()->setMethods(array('updateContact'))->getMock(); $i->expects($this->once())->method('updateContact')->will($this->returnValue($failedContact)); $isdk = $this->getMockedIsdk(); $i->setIsdk($isdk); $collection = new ContactCollection(); $collection->create($data); $expected = $i->push($collection); $this->assertEquals(1, $expected['fail']->count()); }
public function updateContact(Contact $contact) { $isdk = $this->getIsdk(); try { $remote = $this->loadContact($contact->getId()); if (is_string($remote)) { $contact->setErrorMessage($remote); $contact->setIsFailed(); } else { if ($remote->uniqueHash() == $contact->uniqueHash()) { $contact->setIsSkipped(); } else { $response = $isdk->updateCon($contact->getId(), $contact->getData()); if (is_string($response)) { $messsage = 'Add failed. Error:' . $response; $contact->setErrorMessage($messsage); $contact->setIsFailed(); } else { $contact->setId($response); $contact->setIsUpdated(); $remoteTags = $remote->getTags(); $tags = $contact->getTags(); $diff = array_diff($tags, $remoteTags); foreach ($diff as $d) { $response1 = $isdk->grpAssign($contact->getId(), $d); if (is_string($response1)) { $messsage1 = 'Add Tag failed. Error:' . $response1; $isdk->updateCon($contact->getId(), $remote->getData()); $contact->setErrorMessage($messsage1); $contact->setIsFailed(); break; } } $diffRemote = array_diff($remoteTags, $tags); foreach ($diffRemote as $dr) { $response2 = $isdk->grpRemove($contact->getId(), $dr); if (is_string($response2)) { $messsage1 = 'Delete Tag failed. Error:' . $response2; $isdk->updateCon($contact->getId(), $remote->getData()); $contact->setErrorMessage($messsage2); $contact->setIsFailed(); break; } } } } } } catch (Exception $e) { $contact->setErrorMessage($e->getMessage()); $contact->setIsFailed(); } return $contact; }