Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
 
3
$app = 'frontend';
4
$fixtures = 'fixtures/pager.yml';
5
include dirname(__FILE__).'/../../bootstrap/functional.php';
6
 
7
$t = new lime_test(6);
8
 
9
// ->getResults()
10
$t->diag('->getResults()');
11
 
12
$query = Doctrine_Core::getTable('Article')->createQuery();
13
$query->setHydrationMode(Doctrine_Core::HYDRATE_NONE);
14
$pager = new sfDoctrinePager('Article', 10);
15
$pager->setQuery($query);
16
$pager->init();
17
$t->isa_ok($pager->getResults(), 'array', '->getResults() uses the hydration mode set on the query');
18
 
19
// ->getNbResults()
20
$t->diag('->getNbResults()');
21
 
22
$pager = new sfDoctrinePager('Article', 10);
23
$pager->init();
24
$count = Doctrine_Core::getTable('Article')->createQuery()->count();
25
$t->is($pager->getNbResults(), $count, '->getNbResults() returns the number of results');
26
 
27
// Countable interface
28
$t->diag('Countable interface');
29
 
30
$pager = new sfDoctrinePager('Article', 10);
31
$pager->init();
32
$t->is(count($pager), $pager->getNbResults(), '"Countable" interface returns the total number of objects');
33
 
34
// Iterator interface
35
$t->diag('Iterator interface');
36
 
37
$pager = new sfDoctrinePager('Article', 10);
38
$pager->init();
39
$normal = 0;
40
$iterated = 0;
41
foreach ($pager->getResults() as $object)
42
{
43
  $normal++;
44
}
45
foreach ($pager as $object)
46
{
47
  $iterated++;
48
}
49
$t->is($iterated, $normal, '"Iterator" interface loops over objects in the current pager');
50
 
51
// ->setTableMethod()
52
$t->diag('->setTableMethod()');
53
$pager = new sfDoctrinePager('Article', 10);
54
$pager->setTableMethod('addOnHomepage');
55
$pager->init();
56
$t->is($pager->getNbResults(), count(Doctrine_Core::getTable('Article')->findByIsOnHomepage('1')), '->setTableMethod() update the query');
57
 
58
// Serialization test for defect #7987
59
$t->diag('Serialization');
60
$pager = unserialize(serialize($pager));
61
$pager->init();
62
$t->is($pager->getNbResults(), count(Doctrine_Core::getTable('Article')->findByIsOnHomepage('1')), 'serialization preserves TableMethod functionality');