diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/Foo.php | 10 | ||||
-rw-r--r-- | test/SortByFieldExtensionTest.php | 109 |
2 files changed, 119 insertions, 0 deletions
diff --git a/test/Foo.php b/test/Foo.php new file mode 100644 index 0000000..e6e688c --- /dev/null +++ b/test/Foo.php @@ -0,0 +1,10 @@ +<?php +/** + * User: Victor Häggqvist + * Date: 3/4/15 + * Time: 12:58 PM + */ + +class Foo { + public $name; +} diff --git a/test/SortByFieldExtensionTest.php b/test/SortByFieldExtensionTest.php new file mode 100644 index 0000000..64bd11e --- /dev/null +++ b/test/SortByFieldExtensionTest.php @@ -0,0 +1,109 @@ +<?php +/** + * User: Victor Häggqvist + * Date: 3/4/15 + * Time: 3:12 AM + */ + +use Snilius\Twig\SortByFieldExtension; + +require_once 'Foo.php'; + +class SortByFieldExtensionTest extends PHPUnit_Framework_TestCase { + + public function testExtensionLoad() { + $loader = new Twig_Loader_Array(array('foo'=>'')); + $twig = new Twig_Environment($loader); + $twig->addExtension(new SortByFieldExtension()); + $this->addToAssertionCount(1); + $twig->render('foo'); + } + + public function testSortArray(){ + $base = array( + array( + "name" => "Redmine", + "desc" => "Issues Tracker", + "url" => "http://www.redmine.org/", + "oss" => "GPL", + "cost" => 0 + ), + array( + "name" => "GitLab", + "desc" => "Version Control", + "url" => "https://about.gitlab.com/", + "oss" => "GPL", + "cost" => 1, + ), + array( + "name" => "Jenkins", + "desc" => "Continous Integration", + "url" => "http://jenkins-ci.org/", + "oss" => "MIT", + "cost" => 0, + ), + array( + "name" => "Piwik", + "desc" => "Web Analytics", + "url" => "http://piwik.org/", + "oss" => "GPL", + "cost" => 1 + ) + ); + + $fact = array('GitLab','Jenkins','Piwik','Redmine'); + + $filter = new SortByFieldExtension(); + $sorted = $filter->sortByFieldFilter($base,'name'); + + for ($i = 0; $i < count($fact); $i++){ + $this->assertEquals($fact[$i], $sorted[$i]['name']); + } + } + + public function testSortObjects() { + $base = array(); + $ob1 = new Foo(); + $ob1->name = "Redmine"; + $base[]=$ob1; + + $ob2 = new Foo(); + $ob2->name = "GitLab"; + $base[]=$ob2; + + $ob3 = new Foo(); + $ob3->name = "Jenkins"; + $base[]=$ob3; + + $ob4 = new Foo(); + $ob4->name = "Jenkins"; + $base[]=$ob4; + + $fact = array('GitLab','Jenkins','Jenkins','Redmine'); + + $filter = new SortByFieldExtension(); + $sorted = $filter->sortByFieldFilter($base,'name'); + + for ($i = 0; $i < count($fact); $i++){ + $this->assertEquals($fact[$i], $sorted[$i]->name); + } + } + + public function testNonArrayBase() { + $filter = new SortByFieldExtension(); + $this->setExpectedException('InvalidArgumentException'); + $filter->sortByFieldFilter(1, ''); + } + + public function testInvalidField() { + $filter = new SortByFieldExtension(); + $this->setExpectedException('Exception'); + $filter->sortByFieldFilter(array(), null); + } + + public function testUnknownField() { + $filter = new SortByFieldExtension(); + $this->setExpectedException('Exception'); + $filter->sortByFieldFilter(array(new Foo()), 'bar'); + } +} |