/**
  * @param Lead $lead
  * @return Lead|string
  * @throws InvalidParamException
  * @throws ResourceNotFoundException
  */
 public function updateLead(Lead $lead)
 {
     // check if lead has id
     if ($lead->getId() == null) {
         throw new InvalidParamException('When updating a lead you must provide the lead ID');
     }
     // remove id from lead since it won't be part of the patch data
     $id = $lead->getId();
     $lead->setId(null);
     $lead = json_encode($lead);
     $apiRequest = $this->prepareRequest('update-lead', $lead, ['id' => $id]);
     $response = $this->triggerPut($apiRequest);
     // return Lead object if successful
     if ($response->getReturnCode() == 200 && $response->getData() !== null) {
         $lead = new Lead($response->getData());
     } else {
         throw new ResourceNotFoundException();
     }
     return $lead;
 }
 /**
  * @throws \LooplineSystems\CloseIoApiWrapper\Library\Exception\InvalidParamException
  * @throws \LooplineSystems\CloseIoApiWrapper\Library\Exception\ResourceNotFoundException
  * @param Lead $lead
  * @dataProvider leadProvider
  */
 public function testUpdateLead($lead)
 {
     $leadsApi = $this->getLeadsApi();
     $lead->setId('TestId');
     $originalLead = clone $lead;
     $returnedLead = $lead;
     $returnedLead->setName('Test Name');
     // init expected response
     $expectedResponse = new CloseIoResponse();
     $expectedResponse->setReturnCode('200');
     $expectedResponse->setRawData(json_encode($returnedLead));
     $expectedResponse->setData(json_decode($expectedResponse->getRawData(), true));
     // create stub
     $mockCurl = $this->getMockResponderCurl($expectedResponse);
     $leadsApi->setCurl($mockCurl);
     /* @var Lead $response */
     $response = $leadsApi->updateLead($lead);
     $this->assertEquals($lead->getDescription(), $response->getDescription());
     $this->assertEquals($originalLead->getId(), $response->getId());
 }
 /**
  * @param Lead $lead
  *
  * @return Lead
  * @throws InvalidParamException
  */
 public function updateLead(Lead $lead)
 {
     // check if lead has id
     if ($lead->getId() == null) {
         throw new InvalidParamException('When updating a lead you must provide the lead ID');
     }
     // remove id from lead since it won't be part of the patch data
     $id = $lead->getId();
     $lead->setId(null);
     $lead = json_encode($lead);
     $apiRequest = $this->prepareRequest('update-lead', $lead, ['id' => $id]);
     $response = $this->triggerPut($apiRequest);
     return new Lead($response->getData());
 }
 /**
  * @param array $data
  * @dataProvider fullLeadProvider
  */
 public function testCreateDynamicLead($data)
 {
     $hydratedLead = new Lead($data);
     $dynamicLead = new Lead();
     $dynamicLead->setId($data['id']);
     $dynamicLead->setStatusId($data['status_id']);
     $dynamicLead->setStatusLabel($data['status_label']);
     $dynamicLead->setDescription($data['description']);
     $dynamicLead->setDisplayName($data['display_name']);
     $dynamicLead->setAddresses($data['addresses']);
     $dynamicLead->setOrganization($data['organization']);
     $dynamicLead->setCreatedBy($data['created_by']);
     $dynamicLead->setUrl($data['url']);
     $dynamicLead->setTasks($data['tasks']);
     $dynamicLead->setName($data['name']);
     $dynamicLead->setContacts($data['contacts']);
     $dynamicLead->setDateCreated($data['date_created']);
     $dynamicLead->setCustom($data['custom']);
     $dynamicLead->setUpdatedByName($data['updated_by_name']);
     $dynamicLead->setCreatedByName($data['created_by_name']);
     $dynamicLead->setOpportunities($data['opportunities']);
     $dynamicLead->setHtmlUrl($data['html_url']);
     $dynamicLead->setUpdatedBy($data['updated_by']);
     $dynamicLead->setDateUpdated($data['date_updated']);
     $dynamicLead->setOrganizationId($data['organization_id']);
     $dynamicLead = json_decode(json_encode($dynamicLead));
     $hydratedLead = json_decode(json_encode($hydratedLead));
     $this->assertTrue($hydratedLead == $dynamicLead);
 }