22namespace League \Fractal \Test \Pagination ;
33
44use Doctrine \ORM \Query ;
5+ use Doctrine \ORM \Tools \Pagination \Paginator ;
56use League \Fractal \Pagination \DoctrinePaginatorAdapter ;
7+ use League \Fractal \Test \Stub \SimpleTraversable ;
68use Mockery ;
79use PHPUnit \Framework \TestCase ;
810
@@ -28,11 +30,9 @@ public function testPaginationAdapter()
2830 $ paginator ->shouldReceive ('getQuery ' )->andReturn ($ query );
2931
3032 //Mock the iterator of the paginator
31- $ iterator = Mockery::mock ('IteratorAggregate ' );
32- $ iterator ->shouldReceive ('count ' )->andReturn ($ count );
33+ $ iterator = new \ArrayIterator (range (1 , $ count ));
3334 $ paginator ->shouldReceive ('getIterator ' )->andReturn ($ iterator );
3435
35-
3636 $ adapter = new DoctrinePaginatorAdapter ($ paginator , function ($ page ) {
3737 return 'http://example.com/foo?page= ' .$ page ;
3838 });
@@ -57,6 +57,20 @@ public function testPaginationAdapter()
5757 );
5858 }
5959
60+ public function testCountingTraversables ()
61+ {
62+ $ traversable = new SimpleTraversable (range (1 , 100 ));
63+ $ adapter = Mockery::mock ('Doctrine\ORM\Tools\Pagination\Paginator ' );
64+ $ adapter ->shouldReceive ('getIterator ' )->andReturn ($ traversable );
65+ $ adapter = new DoctrinePaginatorAdapter ($ adapter , function ($ page ) {
66+ return (string ) $ page ;
67+ });
68+
69+ $ this ->assertEquals ($ traversable ->key (), 0 );
70+ $ this ->assertEquals ($ adapter ->getCount (), 100 );
71+ $ this ->assertEquals ($ traversable ->key (), 0 );
72+ }
73+
6074 public function tearDown (): void
6175 {
6276 Mockery::close ();
0 commit comments