Source of file ListSorterTest.php
Size: 3,328 Bytes - Last Modified: 2021-12-24T06:34:52+00:00
/var/www/docs.ssmods.com/process/src/tests/php/ListSorterTest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | <?php namespace SilverShop\ListSorter\Tests; use SilverStripe\Control\HTTPRequest; use SilverStripe\Dev\SapphireTest; use SilverShop\ListSorter\ListSorter; use SilverShop\ListSorter\ListSorterOption; use SilverShop\ListSorter\Tests\Stubs\ListSorterPerson; class ListSorterTest extends SapphireTest { protected static $fixture_file = 'fixture.yaml'; protected static $extra_dataobjects = [ ListSorterPerson::class ]; public function testSorting() { $list = ListSorterPerson::get(); $options = [ 'Title', 'Oldest' => 'Age DESC', 'Youngest' => ['Age' => 'ASC'], ListSorterOption::create( 'Age Title', 'Age DESC, Title ASC', //object ListSorterOption::create('Age Title', ['Age' => 'ASC', 'Title' => 'DESC']) //reverse ) ]; //title asc $request = new HTTPRequest('GET', 'people', ['sort' => 'title']); $sorter = ListSorter::create($request, $options); $list = $sorter->sortList($list); $this->assertListEquals( [ ['Title' => 'beth', 'Age' => 20], ['Title' => 'joe', 'Age' => 30], ['Title' => 'sam', 'Age' => 10], ['Title' => 'zoe', 'Age' => 10] ], $list ); //age + title $request = new HTTPRequest('GET', 'people', ['sort' => 'age+title']); $sorter = ListSorter::create($request, $options); $list = $sorter->sortList($list); $this->assertListEquals( [ ['Title' => 'joe', 'Age' => 30], ['Title' => 'beth', 'Age' => 20], ['Title' => 'sam', 'Age' => 10], ['Title' => 'zoe', 'Age' => 10] ], $list ); //age + title reverse $request = new HTTPRequest('GET', 'people', ['sort' => 'age+title_rev']); $sorter = ListSorter::create($request, $options); $list = $sorter->sortList($list); $this->assertListEquals( [ ['Title' => 'zoe', 'Age' => 10], ['Title' => 'sam', 'Age' => 10], ['Title' => 'beth', 'Age' => 20], ['Title' => 'joe', 'Age' => 30] ], $list ); } public function testListSorterOption() { $option = ListSorterOption::create( 'Age Title', 'Age DESC, Title ASC', //object ListSorterOption::create('Age Title', ['Age' => 'ASC', 'Title' => 'DESC']) //reverse ); $this->assertEquals('Age Title', $option->getTitle()); $this->assertEquals('age title', $option->getID()); $this->assertEquals('age title', (string)$option); $this->assertTrue($option->isReversable()); $this->assertEquals('?url=%2F&sort=age+title', $option->getLink()); $reverse = $option->getReverseOption(); $this->assertEquals('Age Title', $reverse->getTitle()); $this->assertEquals('age title_rev', $reverse->getID()); $this->assertEquals('age title_rev', (string)$reverse); $this->assertTrue($reverse->isReversable()); $this->assertEquals('?url=%2F&sort=age+title_rev', $reverse->getLink()); } } |