lithium\tests\cases\data\source\MongoDbTest::testUpdate PHP Method

testUpdate() public method

public testUpdate ( )
    public function testUpdate()
    {
        $model = $this->_model;
        $data = array('title' => 'Test Post');
        $this->_query->model($model);
        $this->_query->data($data);
        $this->_db->connection->results = array(true);
        $this->_db->create($this->_query);
        $result = array_pop($this->_db->connection->queries);
        $data['_id'] = $result['data']['_id'];
        $expected = compact('data') + array('collection' => 'posts', 'type' => 'insert', 'options' => array('w' => 1, 'wTimeoutMS' => 10000, 'fsync' => false));
        $this->assertEqual($expected, $result);
        $this->_db->connection->results = array(new MockResultResource(array('data' => array($data))), new MockResultResource(array('data' => array($data))));
        $this->_db->connection->queries = array();
        $result = $this->_db->read(new Query(compact('model')));
        $original = $result->first()->to('array');
        $this->assertEqual(array('title', '_id'), array_keys($original));
        $this->assertEqual('Test Post', $original['title']);
        $this->assertPattern('/^[0-9a-f]{24}$/', $original['_id']);
        $this->_db->connection->results = array(true);
        $this->_db->connection->queries = array();
        $update = array('title' => 'New Post Title');
        $this->_query = new Query(compact('model') + array('data' => $update, 'conditions' => array('_id' => $original['_id'])));
        $this->assertTrue($this->_db->update($this->_query));
        $result = array_pop($this->_db->connection->queries);
        $expected = array('type' => 'update', 'collection' => 'posts', 'conditions' => array('_id' => '4f188fb17675ab167900010e'), 'update' => array('$set' => array('title' => 'New Post Title')), 'options' => array('upsert' => false, 'multiple' => true, 'w' => 1, 'wTimeoutMS' => 10000, 'fsync' => false));
        array_push($this->_db->connection->results, new MockResultResource(array('data' => array($update + $original))));
        $this->_db->connection->queries = array();
        $result = $this->_db->read(new Query(compact('model') + array('conditions' => array('_id' => $original['_id']))));
        $this->assertEqual(1, $result->count());
        $updated = $result->first();
        $updated = $updated ? $updated->to('array') : array();
        $this->assertEqual($original['_id'], $updated['_id']);
        $this->assertEqual('New Post Title', $updated['title']);
        $expected = array('type' => 'find', 'collection' => 'posts', 'fields' => array(), 'conditions' => array('_id' => $original['_id']));
        $this->assertEqual($expected, array_pop($this->_db->connection->queries));
    }