public function test_accounts_with_contacts_and_personal_data()
 {
     $account = new pybilling\Account(array('name' => 'Dmitry'));
     $account->save();
     # Create
     $personal_data = new pybilling\PersonalData(array('fio' => "Zbignev Bj Жезинский", 'birth' => '1983-09-05', 'postal_index' => 610001, 'postal_address' => 'Address Postal', 'phone' => '+7 495 6680903', 'passport' => '8734 238764234 239874', 'email' => '*****@*****.**', 'account' => $account->id, 'type' => 'PersonalDataPerson'));
     $personal_data->save();
     $aContact = new pybilling\AccountContact(array('name' => 'home', 'address' => '*****@*****.**', 'type' => 'email', 'account' => $account->id));
     $aContact->save();
     //  Checks
     $updated_account = pybilling\Account::get($account->id);
     $this->assertEquals(1, count($updated_account->contacts));
     $this->assertEquals(1, count($updated_account->personal_data));
     // check contacts
     $contact = $updated_account->contacts[0];
     $this->assertEquals('home', $contact->name);
     $this->assertEquals('email', $contact->type);
     $this->assertEquals('*****@*****.**', $contact->address);
     $this->assertEquals($account->id, $contact->account);
     // check personal data
     $pdata = $updated_account->personal_data[0];
     $this->assertEquals('610001', $pdata->postal_index);
     $this->assertEquals('Zbignev Bj Zhezinskij', $pdata->fio_lat);
     $this->assertEquals('Zbignev Bj Жезинский', $pdata->fio);
     $this->assertEquals('PersonalDataPerson', $pdata->type);
     $this->assertEquals('+7 495 6680903', $pdata->phone);
     $this->assertEquals($account->id, $pdata->account);
 }
 public function test_accounts_manage()
 {
     // Create user
     $account = new pybilling\Account(array('name' => 'Dmitry'));
     $account->save();
     # Create
     $aContact = new pybilling\AccountContact(array('name' => 'home', 'address' => '*****@*****.**', 'type' => 'email', 'account' => $account->id));
     $aContact->save();
     $this->assertEquals('home', $aContact->name);
     $this->assertEquals('email', $aContact->type);
     $this->assertEquals('*****@*****.**', $aContact->address);
     $this->assertEquals($account->id, $aContact->account);
     # Update
     $aContact->address = '*****@*****.**';
     $aContact->name = 'work';
     $aContact->save();
     $aContact_upd = pybilling\AccountContact::get($aContact->id);
     $this->assertEquals($aContact->id, $aContact_upd->id);
     $this->assertEquals('work', $aContact_upd->name);
     $this->assertEquals('email', $aContact_upd->type);
     $this->assertEquals('*****@*****.**', $aContact_upd->address);
     $this->assertEquals($account->id, $aContact_upd->account);
     // Delete contacts
     $aContact_upd->delete();
     try {
         pybilling\AccountContact::get($aContact_upd->id);
         $this->fail("Waiting for the exception.");
     } catch (Exception $ex) {
         $this->assertEquals(404, $ex->getCode());
     }
 }