/**
  * Test loadLazyAttribute method
  */
 public function testLoadLazyAttribute()
 {
     $client = Client::findOne(1);
     $this->assertInstanceOf(Client::className(), $client);
     $this->setService('client', $client);
     $customerAttributes = new CustomerAttributes(array('objectId' => 1));
     $this->assertTrue($customerAttributes->hasAttribute('field1'));
     $this->assertTrue($customerAttributes->hasAttribute('field2'));
     $customerAttributes->field1 = 'CAField1';
     $customerAttributes->field2 = 'CAField2';
     $this->assertTrue($customerAttributes->isAttributeChanged('field2'));
     $dirtyAttributes = $customerAttributes->getDirtyAttributes();
     $this->assertInternalType('array', $dirtyAttributes);
     $dirtyAttributes = $customerAttributes->getDirtyAttributes(array('field2'));
     $this->assertInternalType('array', $dirtyAttributes);
     $data = $customerAttributes->toArray();
     $this->assertInternalType('array', $data);
     $data = $customerAttributes->toArray(array('field1'));
     $this->assertInternalType('array', $data);
     $this->assertTrue($customerAttributes->save());
     $customerAttributes = new CustomerAttributes(array('objectId' => 1));
     $this->assertFalse($customerAttributes->isLoaded());
     $customerAttributes->loadAttributeValues(true);
     $this->assertTrue($customerAttributes->isLoaded());
     $data = $customerAttributes->allToArray(true);
     $this->assertTrue(array_key_exists('field1', $data));
     $this->assertTrue(array_key_exists('field2', $data));
     $this->assertEquals('CAField2', $customerAttributes->field2);
     $this->assertEquals('CAField1', $customerAttributes->field1);
     $customerAttributes = new CustomerAttributes(array('objectId' => 1));
     $this->assertFalse($customerAttributes->isLoaded());
     $customerAttributes->loadAttributeValues();
     $this->assertTrue($customerAttributes->isLoaded());
     $data = $customerAttributes->allToArray(true);
     $this->assertTrue(array_key_exists('field1', $data));
     $this->assertFalse(array_key_exists('field2', $data));
     $this->assertEquals('CAField2', $customerAttributes->field2);
     $this->assertEquals('CAField1', $customerAttributes->field1);
     $data = $customerAttributes->allToArray(true);
     $this->assertTrue(array_key_exists('field2', $data));
     $customerAttributes = new CustomerAttributes(array('objectId' => 1));
     $this->assertFalse($customerAttributes->isLoaded());
     $a = $customerAttributes->field1;
     $this->assertTrue($customerAttributes->isLoaded());
     $this->assertEquals('CAField1', $a);
     $this->assertEquals('CAField1', $customerAttributes->field1);
     $data = $customerAttributes->allToArray(true);
     $this->assertFalse(array_key_exists('field2', $data));
     $this->assertTrue($customerAttributes->loadLazyAttribute('field2'));
     $data = $customerAttributes->allToArray(true);
     $this->assertTrue(array_key_exists('field2', $data));
     $this->assertEquals('CAField2', $data['field2']);
     $customerAttributes = new CustomerAttributes(array('objectId' => 1));
     $this->assertEquals('CAField1', $customerAttributes->field1);
     $data = $customerAttributes->allToArray(true);
     $this->assertFalse(array_key_exists('field2', $data));
     $this->assertTrue($customerAttributes->loadLazyAttribute(array('field2')));
     $data = $customerAttributes->allToArray(true);
     $this->assertTrue(array_key_exists('field2', $data));
     $this->assertEquals('CAField2', $data['field2']);
     $customerAttributes = new CustomerAttributes(array('objectId' => 1));
     $this->assertEquals('CAField1', $customerAttributes->field1);
     $data = $customerAttributes->allToArray(true);
     $this->assertFalse(array_key_exists('field2', $data));
     $this->assertTrue($customerAttributes->loadLazyAttribute());
     $data = $customerAttributes->allToArray(true);
     $this->assertTrue(array_key_exists('field2', $data));
     $this->assertEquals('CAField2', $data['field2']);
     $customerAttributes = new CustomerAttributes(1);
     $data = $customerAttributes->allToArray(true);
     $this->assertFalse(array_key_exists('field2', $data));
     $this->assertTrue($customerAttributes->loadLazyAttribute('field2'));
     $data = $customerAttributes->allToArray(true);
     $this->assertEquals('CAField2', $data['field2']);
     $this->assertFalse($customerAttributes->loadLazyAttribute('field2'));
 }