Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

MINOR: Tests for add and edit forms of GridField

  • Loading branch information...
commit 58309cb2ec3e005eb83f9ba52a616f99cfac5c07 1 parent 4e9a4bd
@ajoneil ajoneil authored
View
3  forms/gridfield/GridFieldPopupForms.php
@@ -254,8 +254,7 @@ function doSave($data, $form) {
try {
$form->saveInto($this->record);
$this->record->write();
- if($new_record)
- $this->gridField->getList()->add($this->record);
+ $this->gridField->getList()->add($this->record);
} catch(ValidationException $e) {
$form->sessionMessage($e->getResult()->message(), 'bad');
return Controller::curr()->redirectBack();
View
121 tests/forms/gridfield/GridFieldPopupFormsTest.php
@@ -0,0 +1,121 @@
+<?php
+
+class GridFieldPopupFormsTest extends FunctionalTest {
+ static $fixture_file = 'GridFieldPopupFormsTest.yml';
+
+ protected $extraDataObjects = array(
+ 'GridFieldPopupFormsTest_Person',
+ 'GridFieldPopupFormsTest_PeopleGroup'
+ );
+
+
+ function testAddForm() {
+ $group = DataList::create('GridFieldPopupFormsTest_PeopleGroup')
+ ->filter('Name', 'My Group')
+ ->First();
+ $count = $group->People()->Count();
+
+ $response = $this->get('GridFieldPopupFormsTest_Controller');
+ $this->assertFalse($response->isError());
+ $parser = new CSSContentParser($response->getBody());
+ $addlinkitem = $parser->getBySelector('.ss-gridfield .new-link');
+ $addlink = (string) $addlinkitem[0]['href'];
+
+ $response = $this->get($addlink);
+ $this->assertFalse($response->isError());
+
+ $parser = new CSSContentParser($response->getBody());
+ $addform = $parser->getBySelector('#Form_ItemEditForm');
+ $addformurl = (string) $addform[0]['action'];
+
+ $response = $this->post(
+ $addformurl,
+ array(
+ 'FirstName' => 'Jeremiah',
+ 'Surname' => 'BullFrog',
+ 'action_doSave' => 1
+ )
+ );
+ $this->assertFalse($response->isError());
+
+ $group = DataList::create('GridFieldPopupFormsTest_PeopleGroup')
+ ->filter('Name', 'My Group')
+ ->First();
+ $this->assertEquals($count + 1, $group->People()->Count());
+ }
+
+ function testEditForm() {
+ $group = DataList::create('GridFieldPopupFormsTest_PeopleGroup')
+ ->filter('Name', 'My Group')
+ ->First();
+ $firstperson = $group->People()->First();
+ $this->assertTrue($firstperson->Surname != 'Baggins');
+
+ $response = $this->get('GridFieldPopupFormsTest_Controller');
+ $this->assertFalse($response->isError());
+ $parser = new CSSContentParser($response->getBody());
+ $editlinkitem = $parser->getBySelector('.ss-gridfield-items .first .edit-link');
+ $editlink = (string) $editlinkitem[0]['href'];
+
+ $response = $this->get($editlink);
+ $this->assertFalse($response->isError());
+
+ $parser = new CSSContentParser($response->getBody());
+ $editform = $parser->getBySelector('#Form_ItemEditForm');
+ $editformurl = (string) $editform[0]['action'];
+
+ $response = $this->post(
+ $editformurl,
+ array(
+ 'FirstName' => 'Bilbo',
+ 'Surname' => 'Baggins',
+ 'action_doSave' => 1
+ )
+ );
+ $this->assertFalse($response->isError());
+
+ $group = DataList::create('GridFieldPopupFormsTest_PeopleGroup')
+ ->filter('Name', 'My Group')
+ ->First();
+ $firstperson = $group->People()->First();
+ $this->assertEquals($firstperson->Surname, 'Baggins');
+ }
+}
+
+class GridFieldPopupFormsTest_Person extends DataObject implements TestOnly {
+ static $db = array(
+ 'FirstName' => 'Varchar',
+ 'Surname' => 'Varchar'
+ );
+
+ static $has_one = array(
+ 'Group' => 'GridFieldPopupFormsTest_PeopleGroup'
+ );
+}
+
+class GridFieldPopupFormsTest_PeopleGroup extends DataObject implements TestOnly {
+ static $db = array(
+ 'Name' => 'Varchar'
+ );
+
+ static $has_many = array(
+ 'People' => 'GridFieldPopupFormsTest_Person'
+ );
+}
+
+class GridFieldPopupFormsTest_Controller extends Controller implements TestOnly {
+ protected $template = 'BlankPage';
+
+ function Form() {
+ $group = DataList::create('GridFieldPopupFormsTest_PeopleGroup')
+ ->filter('Name', 'My Group')
+ ->First();
+
+ $field = new GridField('testfield', 'testfield', $group->People());
+ $field->getConfig()->addComponent($gridFieldForm = new GridFieldPopupForms($this, 'Form'));
+ $field->getConfig()->addComponent(new GridFieldAction_Edit());
+ return new Form($this, 'Form', new FieldList($field), new FieldList());
+ }
+}
+
+?>
View
12 tests/forms/gridfield/GridFieldPopupFormsTest.yml
@@ -0,0 +1,12 @@
+GridFieldPopupFormsTest_Person:
+ joe:
+ FirstName: Joe
+ Surname: Bloggs
+ jane:
+ FirstName: Jane
+ Surname: Doe
+
+GridFieldPopupFormsTest_PeopleGroup:
+ group:
+ Name: My Group
+ People: =>GridFieldPopupFormsTest_Person.joe,=>GridFieldPopupFormsTest_Person.jane
View
2  tests/forms/gridfield/GridField_URLHandlerTest.php
@@ -1,4 +1,4 @@
- <?php
+<?php
/**
* Test the API for creating GridField_URLHandler compeonnts
Please sign in to comment.
Something went wrong with that request. Please try again.