diff --git a/tests/GridFieldNestedFormTest.php b/tests/GridFieldNestedFormTest.php index d364314..c7b975f 100644 --- a/tests/GridFieldNestedFormTest.php +++ b/tests/GridFieldNestedFormTest.php @@ -11,6 +11,8 @@ use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor; use SilverStripe\ORM\ArrayList; use Symbiote\GridFieldExtensions\GridFieldNestedForm; use Symbiote\GridFieldExtensions\Tests\Stub\StubHierarchy; +use Symbiote\GridFieldExtensions\Tests\Stub\StubOrdered; +use Symbiote\GridFieldExtensions\Tests\Stub\StubParent; use Symbiote\GridFieldExtensions\Tests\Stub\TestController; class GridFieldNestedFormTest extends SapphireTest @@ -18,7 +20,9 @@ class GridFieldNestedFormTest extends SapphireTest protected static $fixture_file = 'GridFieldNestedFormTest.yml'; protected static $extra_dataobjects = [ - StubHierarchy::class + StubHierarchy::class, + StubParent::class, + StubOrdered::class ]; public function testHierarchy() @@ -55,4 +59,30 @@ class GridFieldNestedFormTest extends SapphireTest $child2 = $this->objFromFixture(StubHierarchy::class, 'item1_1_1'); $this->assertEquals($child2->ID, $list->first()->ID); } + + public function testHasManyRelation() + { + // test that GridFieldNestedForm works with HasMany relations + $parent = $this->objFromFixture(StubParent::class, 'parent1'); + $list = new ArrayList([$parent]); + $config = new GridFieldConfig_RecordEditor(); + $config->addComponent($nestedForm = new GridFieldNestedForm()); + $nestedForm->setRelationName('MyHasMany'); + + $controller = new TestController('Test'); + $form = new Form($controller, 'TestForm', new FieldList( + $gridField = new GridField(__FUNCTION__, 'test', $list, $config) + ), new FieldList()); + + $request = new HTTPRequest('GET', '/'); + $itemEditForm = $nestedForm->handleNestedItem($gridField, $request, $parent); + $this->assertNotNull($itemEditForm); + $nestedGridField = $itemEditForm->Fields()->first(); + $this->assertNotNull($nestedGridField); + $list = $nestedGridField->getList(); + $this->assertEquals(2, $list->count()); + + $child1 = $this->objFromFixture(StubOrdered::class, 'child1'); + $this->assertEquals($child1->ID, $list->first()->ID); + } } diff --git a/tests/GridFieldNestedFormTest.yml b/tests/GridFieldNestedFormTest.yml index aa5235f..f0a6be4 100644 --- a/tests/GridFieldNestedFormTest.yml +++ b/tests/GridFieldNestedFormTest.yml @@ -6,4 +6,14 @@ Symbiote\GridFieldExtensions\Tests\Stub\StubHierarchy: ParentID: =>Symbiote\GridFieldExtensions\Tests\Stub\StubHierarchy.item1 item1_1_1: Title: 'Item 1.1.1' - ParentID: =>Symbiote\GridFieldExtensions\Tests\Stub\StubHierarchy.item1_1 \ No newline at end of file + ParentID: =>Symbiote\GridFieldExtensions\Tests\Stub\StubHierarchy.item1_1 +Symbiote\GridFieldExtensions\Tests\Stub\StubParent: + parent1: + Title: 'Parent 1' +Symbiote\GridFieldExtensions\Tests\Stub\StubOrdered: + child1: + Title: 'Child 1' + ParentID: =>Symbiote\GridFieldExtensions\Tests\Stub\StubParent.parent1 + child2: + Title: 'Child 2' + ParentID: =>Symbiote\GridFieldExtensions\Tests\Stub\StubParent.parent1