From 7d4de590e5b0c72ae2c77c2fa4f3ced8e6a5ac9e Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Fri, 22 Feb 2019 19:53:10 +0100 Subject: [PATCH] Created ImplicitLoopPaginatorTest --- .../PaginableRepositoryAdapterTest.php | 2 +- .../Paginator/ImplicitLoopPaginatorTest.php | 65 +++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) rename module/Common/test/Paginator/{ => Adapter}/PaginableRepositoryAdapterTest.php (95%) create mode 100644 module/Common/test/Paginator/ImplicitLoopPaginatorTest.php diff --git a/module/Common/test/Paginator/PaginableRepositoryAdapterTest.php b/module/Common/test/Paginator/Adapter/PaginableRepositoryAdapterTest.php similarity index 95% rename from module/Common/test/Paginator/PaginableRepositoryAdapterTest.php rename to module/Common/test/Paginator/Adapter/PaginableRepositoryAdapterTest.php index 4e63ba78..4f5afb23 100644 --- a/module/Common/test/Paginator/PaginableRepositoryAdapterTest.php +++ b/module/Common/test/Paginator/Adapter/PaginableRepositoryAdapterTest.php @@ -1,7 +1,7 @@ paginator = new Paginator(new ArrayAdapter(range(1, self::TOTAL_ITEMS))); + } + + /** + * @test + * @dataProvider provideItemsPerPage + */ + public function allElementsAreIteratedRegardlessThePageSize(int $itemsPerPage): void + { + $this->paginator->setItemCountPerPage($itemsPerPage); + $implicitLoopPaginator = new ImplicitLoopPaginator($this->paginator); + + $iteratedItems = 0; + foreach ($implicitLoopPaginator as $item) { + $iteratedItems++; + } + + $this->assertEquals(self::TOTAL_ITEMS, $iteratedItems); + } + + public function provideItemsPerPage(): iterable + { + return map(range(1, 20), function (int $i) { + return [$i]; + }); + } + + /** @test */ + public function valuesWrappedInPaginatorAreProperlyParsed(): void + { + $valueParser = function (int $item) { + return $item * 3; + }; + $this->paginator->setItemCountPerPage(5); + $implicitLoopPaginator = new ImplicitLoopPaginator($this->paginator, $valueParser); + + $items = []; + foreach ($implicitLoopPaginator as $item) { + $items[] = $item; + } + + $this->assertEquals([3, 6, 9, 12, 15, 18, 21, 24, 27, 30], $items); + } +}