Doctrine::getTable('SortableArticle')->createQuery()->delete()->execute(); $a1 = new SortableArticle(); $a1->name = 'First Article'; $a1->save(); $a2 = new SortableArticle(); $a2->name = 'Second Article'; $a2->save(); $a3 = new SortableArticle(); $a3->name = 'Third Article'; $a3->save(); $t->info('Assert articles have thecorrect position'); $t->is($a1['position'], 1, 'First item saved has position of 1'); $t->is($a2['position'], 2, 'Second item saved has position of 2'); $t->is($a3['position'], 3, 'Third item saved has position of 3'); $t->info('Test Demote and Promote'); $a1->demote(); doctrine_refresh($a2); $t->is($a1['position'], 2, 'First item now has position of 2'); $t->is($a2['position'], 1, 'Second item now has position of 1'); $a3->promote(); doctrine_refresh($a1); $t->is($a1['position'], 3, 'First item now has position of 3'); $t->is($a3['position'], 2, 'Third item now has position of 2'); $t->info('Test Table Method "sort()"'); $table = $a1->getTable(); $sort = array($a1['id'], $a2['id'], $a3['id']); $table->sort($sort); $t->comment('Sort to original position (before promote/demote)'); $articles = $table->findAllSorted(); $t->is($articles->count(), 3, 'Three articles returned for "findAllSorted()" method'); $t->is($articles[0]['id'], $a1['id'], 'First item is now first');
$a2->name = 'Second Article'; $a2->save(); $a3 = new SortableArticle(); $a3->name = 'Third Article'; $a3->save(); $t->info('Assert articles have thecorrect position'); $t->is($a1['position'], 1, 'First item saved has position of 1'); $t->is($a2['position'], 2, 'Second item saved has position of 2'); $t->is($a3['position'], 3, 'Third item saved has position of 3'); $t->info('Test Demote and Promote'); $a1->demote(); doctrine_refresh($a2); $t->is($a1['position'], 2, 'First item now has position of 2'); $t->is($a2['position'], 1, 'Second item now has position of 1'); $a3->promote(); doctrine_refresh($a1); $t->is($a1['position'], 3, 'First item now has position of 3'); $t->is($a3['position'], 2, 'Third item now has position of 2'); $t->info('Test Table Method "sort()"'); $table = $a1->getTable(); $sort = array($a1['id'], $a2['id'], $a3['id']); $table->sort($sort); $t->comment('Sort to original position (before promote/demote)'); $articles = $table->findAllSorted();