lithium\tests\cases\data\entity\DocumentTest::testNestedKeyGetSet PHP Method

testNestedKeyGetSet() public method

public testNestedKeyGetSet ( )
    public function testNestedKeyGetSet()
    {
        $doc = new Document(array('model' => $this->_model, 'data' => array('name' => 'Bob', 'location' => 'New York, NY', 'profile' => array('occupation' => 'Developer', 'likes' => 'PHP', 'dislikes' => 'Java'))));
        $expected = array('occupation' => 'Developer', 'likes' => 'PHP', 'dislikes' => 'Java');
        $this->assertEqual($expected, $doc->profile->data());
        $this->assertEqual('Java', $doc->profile->dislikes);
        $this->assertEqual('Java', $doc->{'profile.dislikes'});
        $this->assertNull($doc->{'profile.'});
        $this->assertNull($doc->{'profile.foo'});
        $this->assertNull($doc->{'profile.foo.bar'});
        $doc->{'profile.dislikes'} = 'Crystal Reports';
        $this->assertEqual('Crystal Reports', $doc->profile->dislikes);
        $doc->{'profile.foo.bar'} = 'baz';
        $this->assertInstanceOf('lithium\\data\\entity\\Document', $doc->profile->foo);
        $this->assertEqual(array('bar' => 'baz'), $doc->profile->foo->data());
        $post = new Document(array('model' => $this->_model, 'data' => array('title' => 'Blog Post', 'body' => 'Some post content.', 'meta' => array('tags' => array('foo', 'bar', 'baz')))));
        $this->assertEqual(array('foo', 'bar', 'baz'), $post->meta->tags->data());
        $post->{'meta.tags'}[] = 'dib';
        $this->assertEqual(array('foo', 'bar', 'baz', 'dib'), $post->meta->tags->data());
    }