setModelClass(StubUnorderable::class); $grid->setList(StubUnorderable::get()); return $grid; } private function getMockRecord($id, $title) { $record = new StubUnorderable(); $record->ID = $id; $record->Title = $title; return $record; } public function testProvidesEditableFieldsInColumns() { $grid = $this->getMockGrid(); $component = new GridFieldEditableColumns(); $record = $this->getMockRecord(100, "foo"); $this->assertEquals( [ 'Title' ], $component->getColumnsHandled($grid) ); $record->setCanEdit(true); $column = $component->getColumnContent($grid, $record, 'Title'); $this->assertInstanceOf(DBHTMLText::class, $column); $this->assertRegExp( '/]*>/', $column->getValue() ); } public function testProvidesReadonlyColumnsForNoneditableRecords() { $grid = $this->getMockGrid(); $component = new GridFieldEditableColumns(); $record = $this->getMockRecord(100, "testval"); $record->setCanEdit(false); $column = $component->getColumnContent($grid, $record, 'Title'); $this->assertInstanceOf(DBHTMLText::class, $column); $this->assertRegExp( '/]*>\s*testval\s*<\/span>/', $column->getValue() ); } public function testProvidesReadonlyColumnsForReadonlyGrids() { $grid = $this->getMockGrid(); $component = new GridFieldEditableColumns(); $record = $this->getMockRecord(100, "testval"); $record->setCanEdit(true); $grid = $grid->performReadonlyTransformation(); if (!$grid instanceof GridField) { $this->markTestSkipped('silverstripe/framework <4.2.2 doesn\'t support readonly GridFields'); } $column = $component->getColumnContent($grid, $record, 'Title'); $this->assertInstanceOf(DBHTMLText::class, $column); $this->assertRegExp( '/]*>\s*testval\s*<\/span>/', $column->getValue() ); } }