From 90bb21e34dc1641e31eea59a2838cc8a70b45a13 Mon Sep 17 00:00:00 2001 From: Michael Heap Date: Tue, 10 Oct 2017 17:17:02 +0100 Subject: [PATCH] Update Twig extension for Twig 2. Add unit tests --- composer.json | 3 +- .../Extension/Twig/GravatarExtension.php | 4 +- tests/Gravatar/Tests/TwigExtensionTest.php | 51 +++++++++++++++++++ tests/bootstrap.php | 2 +- 4 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 tests/Gravatar/Tests/TwigExtensionTest.php diff --git a/composer.json b/composer.json index 6f45efe..3670e2b 100644 --- a/composer.json +++ b/composer.json @@ -17,6 +17,7 @@ } }, "require-dev": { - "phpunit/phpunit": "^4.8" + "phpunit/phpunit": "^4.8", + "twig/twig": "^2.4" } } diff --git a/src/Gravatar/Extension/Twig/GravatarExtension.php b/src/Gravatar/Extension/Twig/GravatarExtension.php index cf3d737..a09c4b4 100644 --- a/src/Gravatar/Extension/Twig/GravatarExtension.php +++ b/src/Gravatar/Extension/Twig/GravatarExtension.php @@ -22,8 +22,8 @@ public function __construct(Service $service) public function getFunctions() { return array( - 'gravatar' => new \Twig_Function_Method($this, 'get'), - 'gravatar_exist' => new \Twig_Function_Method($this, 'exist'), + 'gravatar' => new \Twig_Function('gravatar', array($this, 'get'), array('is_safe' => array('html'))), + 'gravatar_exist' => new \Twig_Function('gravatar_exist', array($this, 'exist')), ); } diff --git a/tests/Gravatar/Tests/TwigExtensionTest.php b/tests/Gravatar/Tests/TwigExtensionTest.php new file mode 100644 index 0000000..210f976 --- /dev/null +++ b/tests/Gravatar/Tests/TwigExtensionTest.php @@ -0,0 +1,51 @@ +addExtension(new GravatarExtension($gravatarService)); + } + + public function testRenderGravatarUrl() + { + $twig = new Twig_Environment(new Twig_Loader_Array(array( + 'index.html' => '{{gravatar(email, {"size": 50})}}', + ))); + + $gravatarService = new Service(); + + $twig->addExtension(new GravatarExtension($gravatarService)); + + $url = $twig->render('index.html', array( + 'email' => 'user@example.com' + )); + + $this->assertEquals('http://www.gravatar.com/avatar/b58996c504c5638798eb6b511e6f49af?s=50&r=g', $url); + } + + public function testRenderGravatarExists() + { + $twig = new Twig_Environment(new Twig_Loader_Array(array( + 'exists' => '{{gravatar_exist(email)}}', + ))); + + $gravatarService = new Service(); + + $twig->addExtension(new GravatarExtension($gravatarService)); + + $this->assertEquals("", $twig->render('exists', array('email' => 'user@example.com'))); + $this->assertEquals("1", $twig->render('exists', array('email' => 'm@michaelheap.com'))); + } + +} diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 3bcdbab..6c8c4f5 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -1,3 +1,3 @@