mirror of
https://github.com/symbiote/silverstripe-gridfieldextensions.git
synced 2024-10-22 17:05:39 +02:00
NEW: Add test for GridFieldEditableColumns
Also adds a .gitignore to ignore files created by in-module testing.
This commit is contained in:
parent
229a23a2f4
commit
6becfc2f89
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
vendor/
|
||||||
|
resources/
|
||||||
|
composer.lock
|
||||||
|
|
||||||
|
assets/
|
94
tests/GridFieldEditableColumnsTest.php
Normal file
94
tests/GridFieldEditableColumnsTest.php
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Symbiote\GridFieldExtensions\Tests;
|
||||||
|
|
||||||
|
use Symbiote\GridFieldExtensions\Tests\Stub\TestController;
|
||||||
|
use Symbiote\GridFieldExtensions\Tests\Stub\StubUnorderable;
|
||||||
|
use Symbiote\GridFieldExtensions\GridFieldEditableColumns;
|
||||||
|
use SilverStripe\ORM\FieldType\DBHTMLText;
|
||||||
|
use SilverStripe\Forms\TextField;
|
||||||
|
use SilverStripe\Forms\GridField\GridField;
|
||||||
|
use SilverStripe\Forms\Form;
|
||||||
|
use SilverStripe\Forms\FieldList;
|
||||||
|
use SilverStripe\Dev\SapphireTest;
|
||||||
|
|
||||||
|
class GridFieldEditableColumnsTest extends SapphireTest
|
||||||
|
{
|
||||||
|
private function getMockGrid()
|
||||||
|
{
|
||||||
|
$controller = new TestController('Test');
|
||||||
|
$form = new Form($controller, 'TestForm', new FieldList(
|
||||||
|
$grid = new GridField('TestGridField')
|
||||||
|
), new FieldList());
|
||||||
|
$grid->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(
|
||||||
|
'/<input type="text" name="TestGridField\[GridFieldEditableColumns\]\[100\]\[Title\]" value="foo"[^>]*>/',
|
||||||
|
$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(
|
||||||
|
'/<span[^>]*>\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(
|
||||||
|
'/<span[^>]*>\s*testval\s*<\/span>/',
|
||||||
|
$column->getValue()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -12,4 +12,16 @@ class StubUnorderable extends DataObject implements TestOnly
|
|||||||
];
|
];
|
||||||
|
|
||||||
private static $table_name = 'StubUnorderable';
|
private static $table_name = 'StubUnorderable';
|
||||||
|
|
||||||
|
private $canEdit = false;
|
||||||
|
|
||||||
|
public function setCanEdit($canEdit)
|
||||||
|
{
|
||||||
|
$this->canEdit = $canEdit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function canEdit($member = null)
|
||||||
|
{
|
||||||
|
return $this->canEdit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
10
tests/Stub/TestController.php
Normal file
10
tests/Stub/TestController.php
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Symbiote\GridFieldExtensions\Tests\Stub;
|
||||||
|
|
||||||
|
use SilverStripe\Control\Controller;
|
||||||
|
|
||||||
|
class TestController extends Controller
|
||||||
|
{
|
||||||
|
private static $url_segment = 'test';
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user