public function testSortActionWithAdminPermission() { $team1 = $this->objFromFixture('GridFieldAction_SortOrder_Team', 'team1'); $team2 = $this->objFromFixture('GridFieldAction_SortOrder_Team', 'team2'); $team3 = $this->objFromFixture('GridFieldAction_SortOrder_Team', 'team3'); $this->logInWithPermission('ADMIN'); $stateID = 'testGridStateActionField'; Session::set($stateID, array('grid' => '', 'actionName' => 'saveGridRowSort', 'args' => array('GridFieldSortableRows' => array('sortableToggle' => true)))); $request = new SS_HTTPRequest('POST', 'url', array('ItemIDs' => "{$team1->ID}, {$team3->ID}, {$team2->ID}"), array('action_gridFieldAlterAction?StateID=' . $stateID => true)); $this->gridField->gridFieldAlterAction(array('StateID' => $stateID), $this->form, $request); $this->assertEquals($team2->ID, $this->list->last()->ID, 'User should be able to sort records with ADMIN permission.'); }
public function testAppendToTopAutoSort() { if (Member::currentUser()) { Member::currentUser()->logOut(); } $this->gridField->getConfig()->getComponentByType('GridFieldSortableRows')->setAppendToTop(true); $this->assertEquals(0, $this->list->last()->SortOrder, 'Auto sort should not have run'); $stateID = 'testGridStateActionField'; Session::set($stateID, array('grid' => '', 'actionName' => 'sortableRowsToggle', 'args' => array('GridFieldSortableRows' => array('sortableToggle' => true)))); $request = new SS_HTTPRequest('POST', 'url', array(), array('action_gridFieldAlterAction?StateID=' . $stateID => true)); $this->gridField->gridFieldAlterAction(array('StateID' => $stateID), $this->form, $request); //Insure sort ran $this->assertEquals(3, $this->list->last()->SortOrder, 'Auto sort should have run'); //Check for duplicates (there shouldn't be any) $count = $this->list->Count(); $indexes = count(array_unique($this->list->column('SortOrder'))); $this->assertEquals(0, $count - $indexes, 'Duplicate indexes detected'); }
public function testFirstLast() { $list = new ArrayList(array(array('Key' => 1), array('Key' => 2), array('Key' => 3))); $this->assertEquals($list->first(), array('Key' => 1)); $this->assertEquals($list->last(), array('Key' => 3)); }
public function testMultiSort() { $list = new ArrayList(array( (object) array('ID'=>3, 'Name'=>'Bert', 'Importance'=>1), (object) array('ID'=>1, 'Name'=>'Aron', 'Importance'=>2), (object) array('ID'=>2, 'Name'=>'Aron', 'Importance'=>1), )); $list->sort(array('Name'=>'ASC', 'Importance'=>'ASC')); $this->assertEquals($list->first()->ID, 2, 'Aron.2 should be first in the list'); $this->assertEquals($list->last()->ID, 3, 'Bert.3 should be last in the list'); $list->sort(array('Name'=>'ASC', 'Importance'=>'DESC')); $this->assertEquals($list->first()->ID, 1, 'Aron.2 should be first in the list'); $this->assertEquals($list->last()->ID, 3, 'Bert.3 should be last in the list'); }
public function testMultiSort() { $list = new ArrayList(array((object) array('Name' => 'Object1', 'F1' => 1, 'F2' => 2, 'F3' => 3), (object) array('Name' => 'Object2', 'F1' => 2, 'F2' => 1, 'F3' => 4), (object) array('Name' => 'Object3', 'F1' => 5, 'F2' => 2, 'F3' => 2))); $list->sort('F3', 'ASC'); $this->assertEquals($list->first()->Name, 'Object3', 'Object3 should be first in the list'); $list->sort('F3', 'DESC'); $this->assertEquals($list->first()->Name, 'Object2', 'Object2 should be first in the list'); $list->sort(array('F2' => 'ASC', 'F1' => 'ASC')); $this->assertEquals($list->last()->Name, 'Object3', 'Object3 should be last in the list'); $list->sort(array('F2' => 'ASC', 'F1' => 'DESC')); $this->assertEquals($list->last()->Name, 'Object1', 'Object1 should be last in the list'); }