assertTrue($obj instanceof GridField, 'Test that the constructor arguments are valid'); } /** * @covers GridField::__construct * @covers GridField::getList */ public function testGridFieldSetList() { $list = ArrayList::create(array(1=>'hello', 2=>'goodbye')); $obj = new GridField('testfield', 'testfield', $list); $this->assertEquals($list, $obj->getList(), 'Testing getList'); } /** * @covers GridField::__construct * @covers GridField::getConfig * @covers GridFieldConfig_Base::__construct * @covers GridFieldConfig::addComponent */ public function testGridFieldDefaultConfig() { $obj = new GridField('testfield', 'testfield'); $expectedComponents = new ArrayList(array( new GridFieldToolbarHeader(), $sort = new GridFieldSortableHeader(), $filter = new GridFieldFilterHeader(), new GridFieldDataColumns(), new GridFieldPageCount('toolbar-header-right'), $pagination = new GridFieldPaginator(), new GridState_Component(), )); $sort->setThrowExceptionOnBadDataType(false); $filter->setThrowExceptionOnBadDataType(false); $pagination->setThrowExceptionOnBadDataType(false); $this->assertEquals($expectedComponents, $obj->getConfig()->getComponents(), 'Testing default Config'); } /** * @covers GridFieldConfig::__construct * @covers GridFieldConfig::addComponent */ public function testGridFieldSetCustomConfig() { $config = GridFieldConfig::create(); $config->addComponent(new GridFieldSortableHeader()); $config->addComponent(new GridFieldDataColumns()); $obj = new GridField('testfield', 'testfield', ArrayList::create(array()),$config); $expectedComponents = new ArrayList(array( 0 => new GridFieldSortableHeader, 1 => new GridFieldDataColumns, 2 => new GridState_Component, )); $this->assertEquals($expectedComponents, $obj->getConfig()->getComponents(), 'Testing default Config'); } /** * @covers GridField::getModelClass * @covers GridField::setModelClass */ public function testGridFieldModelClass() { $obj = new GridField('testfield', 'testfield', Member::get()); $this->assertEquals('SilverStripe\\Security\\Member', $obj->getModelClass(), 'Should return Member'); $obj->setModelClass('SilverStripe\\ORM\\DataModel'); $this->assertEquals('SilverStripe\\ORM\\DataModel', $obj->getModelClass(), 'Should return Member'); } /** * @covers GridField::getModelClass */ public function testGridFieldModelClassThrowsException() { $this->setExpectedException('LogicException'); $obj = new GridField('testfield', 'testfield', ArrayList::create()); $obj->getModelClass(); } /** * @covers GridField::setList * @covers GridField::getList */ public function testSetAndGetList() { $list = Member::get(); $arrayList = ArrayList::create(array(1,2,3)); $obj = new GridField('testfield', 'testfield', $list); $this->assertEquals($list, $obj->getList()); $obj->setList($arrayList); $this->assertEquals($arrayList, $obj->getList()); } /** * @covers GridField::getState */ public function testGetState() { $obj = new GridField('testfield', 'testfield'); $this->assertTrue($obj->getState() instanceof GridState_Data); $this->assertTrue($obj->getState(false) instanceof GridState); } /** * Tests usage of nested GridState values * * @covers GridState_Data::__get * @covers GridState_Data::__call * @covers GridState_Data::getData */ public function testGetStateData() { $obj = new GridField('testfield', 'testfield'); // @todo - PHP 7.0.6 change requires __isset() to return true // for each reference from left to right along an isset() invocation. // See https://bugs.php.net/bug.php?id=62059 // Check value persistance $this->assertEquals(15, $obj->State->NoValue(15)); $this->assertEquals(15, $obj->State->NoValue(-1)); $obj->State->NoValue = 10; $this->assertEquals(10, $obj->State->NoValue); $this->assertEquals(10, $obj->State->NoValue(20)); // Test that values can be set, unset, and inspected $this->assertFalse(isset($obj->State->NotSet)); $obj->State->NotSet = false; $this->assertTrue(isset($obj->State->NotSet)); unset($obj->State->NotSet); $this->assertFalse(isset($obj->State->NotSet)); // Test that false evaluating values are storable $this->assertEquals(0, $obj->State->Falsey0(0)); // expect 0 back $this->assertEquals(0, $obj->State->Falsey0(10)); // expect 0 back $this->assertEquals(0, $obj->State->Falsey0); //expect 0 back $obj->State->Falsey0 = 0; //manually assign 0 $this->assertEquals(0, $obj->State->Falsey0); //expect 0 back // Test that false is storable $this->assertFalse($obj->State->Falsey2(false)); $this->assertFalse($obj->State->Falsey2(true)); $this->assertFalse($obj->State->Falsey2); $obj->State->Falsey2 = false; $this->assertFalse($obj->State->Falsey2); // Check nested values $this->assertInstanceOf('GridState_Data', $obj->State->Nested); $this->assertInstanceOf('GridState_Data', $obj->State->Nested->DeeperNested()); $this->assertEquals(3, $obj->State->Nested->DataValue(3)); $this->assertEquals(10, $obj->State->Nested->DeeperNested->DataValue(10)); } /** * @covers GridField::getColumns */ public function testGetColumns(){ $obj = new GridField('testfield', 'testfield', Member::get()); $expected = array ( 0 => 'FirstName', 1 => 'Surname', 2 => 'Email', ); $this->assertEquals($expected, $obj->getColumns()); } /** * @covers GridField::getColumnCount */ public function testGetColumnCount() { $obj = new GridField('testfield', 'testfield', Member::get()); $this->assertEquals(3, $obj->getColumnCount()); } /** * @covers GridField::getColumnContent */ public function testGetColumnContent() { $list = new ArrayList(array( new Member(array("ID" => 1, "Email" => "test@example.org" )) )); $obj = new GridField('testfield', 'testfield', $list); $this->assertEquals('test@example.org', $obj->getColumnContent($list->first(), 'Email')); } /** * @covers GridField::getColumnContent */ public function testGetColumnContentBadArguments() { $this->setExpectedException('InvalidArgumentException'); $list = new ArrayList(array( new Member(array("ID" => 1, "Email" => "test@example.org" )) )); $obj = new GridField('testfield', 'testfield', $list); $obj->getColumnContent($list->first(), 'non-existing'); } /** * @covers GridField::getColumnAttributes */ public function testGetColumnAttributesEmptyArray() { $list = new ArrayList(array( new Member(array("ID" => 1, "Email" => "test@example.org" )) )); $obj = new GridField('testfield', 'testfield', $list); $this->assertEquals(array('class' => 'col-Email'), $obj->getColumnAttributes($list->first(), 'Email')); } /** * @covers GridField::getColumnAttributes */ public function testGetColumnAttributes() { $list = new ArrayList(array( new Member(array("ID" => 1, "Email" => "test@example.org" )) )); $config = GridFieldConfig::create()->addComponent(new GridFieldTest_Component); $obj = new GridField('testfield', 'testfield', $list, $config); $this->assertEquals(array('class'=>'css-class'), $obj->getColumnAttributes($list->first(), 'Email')); } /** * @covers GridField::getColumnAttributes */ public function testGetColumnAttributesBadArguments() { $this->setExpectedException('InvalidArgumentException'); $list = new ArrayList(array( new Member(array("ID" => 1, "Email" => "test@example.org" )) )); $config = GridFieldConfig::create()->addComponent(new GridFieldTest_Component); $obj = new GridField('testfield', 'testfield', $list, $config); $obj->getColumnAttributes($list->first(), 'Non-existing'); } public function testGetColumnAttributesBadResponseFromComponent() { $this->setExpectedException('LogicException'); $list = new ArrayList(array( new Member(array("ID" => 1, "Email" => "test@example.org" )) )); $config = GridFieldConfig::create()->addComponent(new GridFieldTest_Component); $obj = new GridField('testfield', 'testfield', $list, $config); $obj->getColumnAttributes($list->first(), 'Surname'); } /** * @covers GridField::getColumnMetadata */ public function testGetColumnMetadata() { $list = new ArrayList(array( new Member(array("ID" => 1, "Email" => "test@example.org" )) )); $config = GridFieldConfig::create()->addComponent(new GridFieldTest_Component); $obj = new GridField('testfield', 'testfield', $list, $config); $this->assertEquals(array('metadata'=>'istrue'), $obj->getColumnMetadata('Email')); } /** * @covers GridField::getColumnMetadata */ public function testGetColumnMetadataBadResponseFromComponent() { $this->setExpectedException('LogicException'); $list = new ArrayList(array( new Member(array("ID" => 1, "Email" => "test@example.org" )) )); $config = GridFieldConfig::create()->addComponent(new GridFieldTest_Component); $obj = new GridField('testfield', 'testfield', $list, $config); $obj->getColumnMetadata('Surname'); } /** * @covers GridField::getColumnMetadata */ public function testGetColumnMetadataBadArguments() { $this->setExpectedException('InvalidArgumentException'); $list = ArrayList::create(); $config = GridFieldConfig::create()->addComponent(new GridFieldTest_Component); $obj = new GridField('testfield', 'testfield', $list, $config); $obj->getColumnMetadata('non-exist-qweqweqwe'); } /** * @covers GridField::handleAction */ public function testHandleActionBadArgument() { $this->setExpectedException('InvalidArgumentException'); $obj = new GridField('testfield', 'testfield'); $obj->handleAlterAction('prft', array(), array()); } /** * @covers GridField::handleAction */ public function testHandleAction() { $config = GridFieldConfig::create()->addComponent(new GridFieldTest_Component); $obj = new GridField('testfield', 'testfield', ArrayList::create(), $config); $this->assertEquals('handledAction is executed', $obj->handleAlterAction('jump', array(), array())); } /** * @covers GridField::getCastedValue */ public function testGetCastedValue() { $obj = new GridField('testfield', 'testfield'); $value = $obj->getCastedValue('This is a sentance. This ia another.', array('Text->FirstSentence')); $this->assertEquals('This is a sentance.', $value); } /** * @covers GridField::getCastedValue */ public function testGetCastedValueObject() { $obj = new GridField('testfield', 'testfield'); $value = $obj->getCastedValue('This is a sentance. This ia another.', 'Date'); $this->assertEquals(null, $value); } /** * @covers GridField::gridFieldAlterAction */ public function testGridFieldAlterAction() { $this->markTestIncomplete(); // $config = GridFieldConfig::create()->addComponent(new GridFieldTest_Component); // $obj = new GridField('testfield', 'testfield', ArrayList::create(), $config); // $id = 'testGridStateActionField'; // Session::set($id, array('grid'=>'', 'actionName'=>'jump')); // $form = new Form(new Controller(), 'mockform', new FieldList(array($obj)), new FieldList()); // $request = new SS_HTTPRequest('POST', 'url'); // $obj->gridFieldAlterAction(array('StateID'=>$id), $form, $request); } /** * Test the interface for adding custom HTML fragment slots via a component */ public function testGridFieldCustomFragments() { new GridFieldTest_HTMLFragments(array( "header-left-actions" => "left\$DefineFragment(nested-left)", "header-right-actions" => "right", )); new GridFieldTest_HTMLFragments(array( "nested-left" => "[inner]", )); $config = GridFieldConfig::create()->addComponents( new GridFieldTest_HTMLFragments(array( "header" => "