public function testFactory() { $view1 = $this->getMock('Pagerfanta\\View\\ViewInterface'); $view2 = $this->getMock('Pagerfanta\\View\\ViewInterface'); $view3 = $this->getMock('Pagerfanta\\View\\ViewInterface'); $view4 = $this->getMock('Pagerfanta\\View\\ViewInterface'); $factory = new ViewFactory(); $factory->set('foo', $view1); $factory->set('bar', $view2); $this->assertSame(array('foo' => $view1, 'bar' => $view2), $factory->all()); $this->assertSame($view1, $factory->get('foo')); $this->assertSame($view2, $factory->get('bar')); try { $factory->get('foobar'); $this->fail(); } catch (\Exception $e) { $this->assertInstanceOf('Pagerfanta\\Exception\\InvalidArgumentException', $e); } $this->assertTrue($factory->has('foo')); $this->assertTrue($factory->has('bar')); $this->assertFalse($factory->has('foobar')); $factory->add(array('ups' => $view3, 'man' => $view4)); $this->assertSame($view3, $factory->get('ups')); $this->assertSame($view4, $factory->get('man')); $this->assertTrue($factory->has('ups')); $this->assertTrue($factory->has('man')); $this->assertSame(array('foo' => $view1, 'bar' => $view2, 'ups' => $view3, 'man' => $view4), $factory->all()); $factory->remove('bar'); $this->assertFalse($factory->has('bar')); $this->assertTrue($factory->has('foo')); $this->assertTrue($factory->has('ups')); $this->assertTrue($factory->has('man')); $this->assertSame(array('foo' => $view1, 'ups' => $view3, 'man' => $view4), $factory->all()); try { $factory->remove('foobar'); $this->fail(); } catch (\Exception $e) { $this->assertInstanceOf('Pagerfanta\\Exception\\InvalidArgumentException', $e); } $factory->clear(); $this->assertSame(array(), $factory->all()); }
public function register(Application $app) { $app['pagerfanta.pager_factory'] = $app->share(function ($app) { return new PagerfantaFactory(); }); $app['pagerfanta.view.default_options'] = array('routeName' => null, 'routeParams' => array(), 'pageParameter' => '[page]', 'proximity' => 3, 'next_message' => '»', 'prev_message' => '«', 'default_view' => 'default'); $app['pagerfanta.view_factory'] = $app->share(function ($app) { $defaultView = new DefaultView(); $twitterBoostrapView = new TwitterBootstrapView(); $factoryView = new ViewFactory(); $factoryView->add(array($defaultView->getName() => $defaultView, $twitterBoostrapView->getName() => $twitterBoostrapView)); return $factoryView; }); if (isset($app['twig'])) { $app->extend('twig', function ($twig, $app) { $twig->addExtension(new PagerfantaExtension($app)); return $twig; }); } }