public static function setUpBeforeClass()
 {
     self::$client = new Client();
     $contactsStream = Stream::factory(JsonLoader::getContactsJson());
     $contactsNoNextStream = Stream::factory(JsonLoader::getContactsNoNextJson());
     $contactStream = Stream::factory(JsonLoader::getContactJson());
     $mock = new Mock([new Response(200, array(), $contactsStream), new Response(200, array(), $contactsNoNextStream), new Response(200, array(), $contactStream), new Response(201, array(), $contactStream), new Response(204, array()), new Response(400, array()), new Response(200, array(), $contactStream)]);
     self::$client->getEmitter()->attach($mock);
 }
 public function testUpdateContact()
 {
     $curlResponse = CurlResponse::create(JsonLoader::getContactJson(), array('http_code' => 200));
     $this->restClient->expects($this->once())->method('put')->with()->will($this->returnValue($curlResponse));
     $contact = $this->contactService->updateContact('access_token', new Contact(), array());
     $this->assertInstanceOf("Ctct\\Components\\Contacts\\Contact", $contact);
     $this->assertEquals(238, $contact->id);
     $this->assertEquals("ACTIVE", $contact->status);
     $this->assertEquals("555-1212", $contact->fax);
     $this->assertEquals("Mr.", $contact->prefix_name);
     $this->assertEquals("John", $contact->first_name);
     $this->assertEquals("S", $contact->middle_name);
     $this->assertEquals("Smith", $contact->last_name);
     $this->assertEquals("Software Engineer", $contact->job_title);
     $this->assertEquals("Constant Contact", $contact->company_name);
     $this->assertEquals("555-1212", $contact->home_phone);
     $this->assertEquals("555-1213", $contact->work_phone);
     $this->assertEquals("555-1214", $contact->cell_phone);
     $this->assertEquals("69f9d72b-0a5e-479d-b844-722b1da9595f", $contact->source_details);
     $this->assertEquals(false, $contact->confirmed);
     $this->assertEquals("API", $contact->source);
     // custom fields
     $this->assertInstanceOf("Ctct\\Components\\Contacts\\CustomField", $contact->custom_fields[0]);
     $this->assertEquals("CustomField1", $contact->custom_fields[0]->name);
     $this->assertEquals("3/28/2011 11:09 AM EDT", $contact->custom_fields[0]->value);
     $this->assertEquals("CustomField2", $contact->custom_fields[1]->name);
     $this->assertEquals("Site owner", $contact->custom_fields[1]->value);
     //addresses
     $this->assertInstanceOf("Ctct\\Components\\Contacts\\Address", $contact->addresses[0]);
     $this->assertEquals("1601 Trapelo Rd", $contact->addresses[0]->line1);
     $this->assertEquals("Suite 329", $contact->addresses[0]->line2);
     $this->assertEquals("Line 3", $contact->addresses[0]->line3);
     $this->assertEquals("Waltham", $contact->addresses[0]->city);
     $this->assertEquals("PERSONAL", $contact->addresses[0]->address_type);
     $this->assertEquals("MA", $contact->addresses[0]->state_code);
     $this->assertEquals("us", $contact->addresses[0]->country_code);
     $this->assertEquals("01720", $contact->addresses[0]->postal_code);
     $this->assertEquals("7885", $contact->addresses[0]->sub_postal_code);
     //notes
     $this->assertInstanceOf("Ctct\\Components\\Contacts\\Note", $contact->notes[0]);
     $this->assertEquals(1, $contact->notes[0]->id);
     $this->assertEquals("Here are some cool notes to add", $contact->notes[0]->note);
     $this->assertEquals("2012-12-03T17:09:22.702Z", $contact->notes[0]->created_date);
     //lists
     $this->assertInstanceOf("Ctct\\Components\\Contacts\\ContactList", $contact->lists[0]);
     $this->assertEquals(9, $contact->lists[0]->id);
     $this->assertEquals("ACTIVE", $contact->lists[0]->status);
     // EmailAddress
     $this->assertInstanceOf("Ctct\\Components\\Contacts\\EmailAddress", $contact->email_addresses[0]);
     $this->assertEquals("ACTIVE", $contact->email_addresses[0]->status);
     $this->assertEquals("NO_CONFIRMATION_REQUIRED", $contact->email_addresses[0]->confirm_status);
     $this->assertEquals("ACTION_BY_VISITOR", $contact->email_addresses[0]->opt_in_source);
     $this->assertEquals("2012-09-17T14:40:41.271Z", $contact->email_addresses[0]->opt_in_date);
     $this->assertEquals("2012-03-29T14:59:25.427Z", $contact->email_addresses[0]->opt_out_date);
     $this->assertEquals("*****@*****.**", $contact->email_addresses[0]->email_address);
 }