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

testSyncModified() public method

public testSyncModified ( )
    public function testSyncModified()
    {
        $doc = new Document();
        $doc->_id = 4;
        $doc->name = 'Four';
        $doc->content = 'Lorem ipsum four';
        $expected = array('_id' => true, 'name' => true, 'content' => true);
        $this->assertEqual($expected, $doc->modified());
        $doc->sync();
        $this->assertEqual(array_fill_keys(array_keys($expected), false), $doc->modified());
        $doc->_id = 5;
        $doc->content = null;
        $doc->new = null;
        $expected = array('_id' => true, 'name' => false, 'content' => true, 'new' => true);
        $this->assertEqual($expected, $doc->modified());
        $doc = new Document(array('model' => $this->_model));
        $doc->id = 4;
        $doc->name = 'Four';
        $doc->content = 'Lorem ipsum four';
        $doc->array = array(1, 2, 3, 4);
        $doc->subdoc = array('setting' => 'something', 'foo' => 'bar', 'sub' => array('name' => 'A sub sub doc'));
        $doc->subdocs = array(array('id' => 1), array('id' => 2), array('id' => 3), array('id' => 4));
        $fields = array('id', 'name', 'content', 'array', 'subdoc', 'subdocs');
        $expected = array_fill_keys($fields, true);
        $this->assertEqual($expected, $doc->modified());
        $doc->sync();
        $this->assertEqual(array_fill_keys($fields, false), $doc->modified());
        $doc->id = 5;
        $doc->content = null;
        $doc->new = null;
        $doc->subdoc->foo = 'baz';
        $doc->array[] = 5;
        $doc->subdocs[] = array('id' => 5);
        $expected['name'] = false;
        $expected['new'] = true;
        $fields[] = 'new';
        $this->assertEqual($expected, $doc->modified());
        $doc->sync();
        $expected = array_fill_keys($fields, false);
        $this->assertEqual($expected, $doc->modified());
        $doc->sync();
        $doc->subdocs[1]->updated = true;
        $expected['subdocs'] = true;
        $this->assertEqual($expected, $doc->modified());
        $doc->sync();
        $doc->array[1] = array('foo' => 'bar');
        $expected['array'] = true;
        $this->assertEqual($expected, $doc->modified());
        $doc->sync();
    }