From 88039ffb8172fbb2c641957639b96036bb127936 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 1 Mar 2012 14:32:30 +0100 Subject: [PATCH] MINOR GridFieldRelationAddTest (SSF-53) --- tests/forms/GridFieldTest.php | 18 ++++ .../gridfield/GridFieldRelationAddTest.php | 82 +++++++++++++++++++ tests/forms/gridfield/GridFieldTest.yml | 18 ++++ 3 files changed, 118 insertions(+) create mode 100644 tests/forms/gridfield/GridFieldRelationAddTest.php create mode 100644 tests/forms/gridfield/GridFieldTest.yml diff --git a/tests/forms/GridFieldTest.php b/tests/forms/GridFieldTest.php index 9cd8609a3..0e877eddd 100644 --- a/tests/forms/GridFieldTest.php +++ b/tests/forms/GridFieldTest.php @@ -370,4 +370,22 @@ class GridFieldTest_Component implements GridField_ColumnProvider, GridField_Act } +} + +class GridFieldTest_Team extends DataObject implements TestOnly { + static $db = array( + 'Name' => 'Varchar', + 'City' => 'Varchar' + ); + + static $many_many = array('Players' => 'GridFieldTest_Player'); +} + +class GridFieldTest_Player extends DataObject implements TestOnly { + static $db = array( + 'Name' => 'Varchar', + 'Email' => 'Varchar', + ); + + static $belongs_many_many = array('Teams' => 'GridFieldTest_Team'); } \ No newline at end of file diff --git a/tests/forms/gridfield/GridFieldRelationAddTest.php b/tests/forms/gridfield/GridFieldRelationAddTest.php new file mode 100644 index 000000000..618fde08b --- /dev/null +++ b/tests/forms/gridfield/GridFieldRelationAddTest.php @@ -0,0 +1,82 @@ +objFromFixture('GridFieldTest_Team', 'team1'); + $team2 = $this->objFromFixture('GridFieldTest_Team', 'team2'); + + $response = $this->get('GridFieldRelationAddTest_Controller'); + $this->assertFalse($response->isError()); + $parser = new CSSContentParser($response->getBody()); + $btns = $parser->getBySelector('.ss-gridfield #action_gridfield_relationfind'); + + $response = $this->post( + 'GridFieldRelationAddTest_Controller/Form/field/testfield/search/Team 2', + array( + (string)$btns[0]['name'] => 1 + ) + ); + $this->assertFalse($response->isError()); + $result = Convert::json2array($response->getBody()); + $this->assertEquals(1, count($result)); + $this->assertEquals(array($team2->ID => 'Team 2'), $result); + + $response = $this->post( + 'GridFieldRelationAddTest_Controller/Form/field/testfield/search/Unknown', + array( + (string)$btns[0]['name'] => 1 + ) + ); + $this->assertFalse($response->isError()); + $result = Convert::json2array($response->getBody()); + $this->assertFalse($result); + } + + function testAdd() { + $team1 = $this->objFromFixture('GridFieldTest_Team', 'team1'); + $team2 = $this->objFromFixture('GridFieldTest_Team', 'team2'); + + $response = $this->get('GridFieldRelationAddTest_Controller'); + $this->assertFalse($response->isError()); + $parser = new CSSContentParser($response->getBody()); + $items = $parser->getBySelector('.ss-gridfield .ss-gridfield-items .ss-gridfield-item'); + $this->assertEquals(1, count($items)); + $this->assertEquals($team1->ID, (int)$items[0]['data-id']); + + $btns = $parser->getBySelector('.ss-gridfield #action_gridfield_relationadd'); + $response = $this->post( + 'GridFieldRelationAddTest_Controller/Form/field/testfield', + array( + 'relationID' => $team2->ID, + (string)$btns[0]['name'] => 1 + ) + ); + $this->assertFalse($response->isError()); + $parser = new CSSContentParser($response->getBody()); + $items = $parser->getBySelector('.ss-gridfield .ss-gridfield-items .ss-gridfield-item'); + $this->assertEquals(2, count($items)); + $this->assertEquals($team1->ID, (int)$items[0]['data-id']); + $this->assertEquals($team2->ID, (int)$items[1]['data-id']); + + } + +} + +class GridFieldRelationAddTest_Controller extends Controller implements TestOnly { + + protected $template = 'BlankPage'; + + function Form() { + $player = DataObject::get('GridFieldTest_Player')->find('Email', 'player1@test.com'); + $config = GridFieldConfig::create()->addComponents( + $relationComponent = new GridFieldRelationAdd('Name'), + new GridFieldDefaultColumns() + ); + $field = new GridField('testfield', 'testfield', $player->Teams(), $config); + return new Form($this, 'Form', new FieldList($field), new FieldList()); + } +} \ No newline at end of file diff --git a/tests/forms/gridfield/GridFieldTest.yml b/tests/forms/gridfield/GridFieldTest.yml new file mode 100644 index 000000000..101557aec --- /dev/null +++ b/tests/forms/gridfield/GridFieldTest.yml @@ -0,0 +1,18 @@ +GridFieldTest_Team: + team1: + Name: Team 1 + City: Cologne + team2: + Name: Team 2 + City: Wellington + team3: + Name: Team 3 + City: Auckland + team4: + Name: Team 4 + City: Melbourne +GridFieldTest_Player: + player1_team1: + Name: Player 1 + Email: player1@test.com + Teams: =>GridFieldTest_Team.team1 \ No newline at end of file