getMockBuilder(UrlGeneratorInterface::class)->getMock(); $urlGenerator ->expects($this->any()) ->method('generate') ->will($this->returnCallback(function ($name, $parameters = []) { $params = []; foreach ($parameters as $k => $v) { $params[] = $k . '=' . $v; } return (string) $name . '?' . implode('&', $params); })) ; return $urlGenerator; } protected function getSut(): PaginationExtension { return new PaginationExtension($this->getUrlGenerator()); } public function testGetFunctions() { $functions = ['pagerfanta', 'pagination']; $sut = $this->getSut(); $twigFunctions = $sut->getFunctions(); self::assertCount(\count($functions), $twigFunctions); $i = 0; /** @var TwigFunction $filter */ foreach ($twigFunctions as $filter) { self::assertInstanceOf(TwigFunction::class, $filter); self::assertEquals($functions[$i++], $filter->getName()); } } /** * @group legacy */ public function testDeprecatedRenderPagerfanta() { $sut = $this->getSut(); $values = array_fill(0, 151, 'blub'); $pagerfanta = new Pagerfanta(new ArrayAdapter($values)); $result = $sut->renderPagerfanta($pagerfanta, 'twitter_bootstrap3_translated', [ 'css_container_class' => 'pagination pagination-sm inline', 'routeName' => 'project_activities', 'routeParams' => ['id' => 137] ]); $this->assertPaginationHtml($result); } /** * @group legacy */ public function testDeprecatedRenderPagerfantaWithoutTemplateName() { $sut = $this->getSut(); $values = array_fill(0, 151, 'blub'); $pagerfanta = new Pagerfanta(new ArrayAdapter($values)); $result = $sut->renderPagerfanta($pagerfanta, [ 'css_container_class' => 'pagination pagination-sm inline', 'routeName' => 'project_activities', 'routeParams' => ['id' => 137] ]); $this->assertPaginationHtml($result); } protected function assertPaginationHtml($result) { $expected = ''; self::assertEquals($expected, $result); } public function testRenderPagination() { $sut = $this->getSut(); $values = array_fill(0, 151, 'blub'); $pagerfanta = new Pagerfanta(new ArrayAdapter($values)); $result = $sut->renderPagination($pagerfanta, [ 'css_container_class' => 'pagination pagination-sm inline', 'routeName' => 'project_activities', 'routeParams' => ['id' => 137] ]); $this->assertPaginationHtml($result); } public function testRenderPaginationWithoutRouteName() { $this->expectException(\Exception::class); $this->expectExceptionMessage('Pagination is missing the "routeName" option'); $sut = $this->getSut(); $values = array_fill(0, 151, 'blub'); $pagerfanta = new Pagerfanta(new ArrayAdapter($values)); $result = $sut->renderPagination($pagerfanta, [ 'css_container_class' => 'pagination pagination-sm inline', 'routeParams' => ['id' => 137] ]); $this->assertPaginationHtml($result); } }