public function testDocumentSorting() {
$model = $this->_model;
$model::config(array('connection' => 'lithium_mongo_test', 'source' => 'ordered_docs'));
$model::create(array('title' => 'Third document', 'position' => 3))->save();
$model::create(array('title' => 'First document', 'position' => 1))->save();
$model::create(array('title' => 'Second document', 'position' => 2))->save();
$documents = $model::all(array('order' => 'position'));
$this->assertEqual('First document', $documents[0]->title);
$this->assertEqual('Second document', $documents[1]->title);
$this->assertEqual('Third document', $documents[2]->title);
$documents = $model::all(array('order' => array('position' => 'asc')));
$this->assertEqual('First document', $documents[0]->title);
$this->assertEqual('Second document', $documents[1]->title);
$this->assertEqual('Third document', $documents[2]->title);
$copy = $model::all(array('order' => array('position')));
$this->assertIdentical($documents->data(), $copy->data());
$documents = $model::all(array('order' => array('position' => 'desc')));
$this->assertEqual('Third document', $documents[0]->title);
$this->assertEqual('Second document', $documents[1]->title);
$this->assertEqual('First document', $documents[2]->title);
$list = $model::find('list');
$this->assertEqual(3, count($list));
foreach ($list as $id => $title) {
$this->assertTrue(is_string($id));
$this->assertPattern('/^[a-f0-9]{24}$/', $id);
$this->assertNull($title);
}
$model::config(array('title' => 'title'));
$list = $model::find('list');
$this->assertEqual(3, count($list));
foreach ($list as $id => $title) {
$this->assertTrue(is_string($id));
$this->assertPattern('/^[a-f0-9]{24}$/', $id);
$this->assertPattern('/^(First|Second|Third) document$/', $title);
}
foreach ($documents as $i => $doc) {
$this->assertTrue($doc->delete());
}
}