/** * Test that related objects can be removed from a relation */ public function testRemoveRelation() { // Check that expected teams exist $list = DataObjectTest_Team::get(); $this->assertEquals(array('Subteam 1', 'Subteam 2', 'Subteam 3', 'Team 1', 'Team 2', 'Team 3'), $list->sort('Title')->column('Title')); // Test that each team has the correct fans $team1 = $this->objFromFixture('DataObjectTest_Team', 'team1'); $subteam1 = $this->objFromFixture('DataObjectTest_SubTeam', 'subteam1'); $this->assertEquals(array('Damian', 'Richard'), $team1->Fans()->sort('Name')->column('Name')); $this->assertEquals(array('Mitch'), $subteam1->Fans()->sort('Name')->column('Name')); // Test that removing items from unrelated team has no effect $team1fan = $this->objFromFixture('DataObjectTest_Fan', 'fan1'); $subteam1fan = $this->objFromFixture('DataObjectTest_Fan', 'fan4'); $team1->Fans()->remove($subteam1fan); $subteam1->Fans()->remove($team1fan); $this->assertEquals(array('Damian', 'Richard'), $team1->Fans()->sort('Name')->column('Name')); $this->assertEquals(array('Mitch'), $subteam1->Fans()->sort('Name')->column('Name')); $this->assertEquals($team1->ID, $team1fan->FavouriteID); $this->assertEquals('DataObjectTest_Team', $team1fan->FavouriteClass); $this->assertEquals($subteam1->ID, $subteam1fan->FavouriteID); $this->assertEquals('DataObjectTest_SubTeam', $subteam1fan->FavouriteClass); // Test that removing items from the related team resets the has_one relations on the fan $team1fan = $this->objFromFixture('DataObjectTest_Fan', 'fan1'); $subteam1fan = $this->objFromFixture('DataObjectTest_Fan', 'fan4'); $team1->Fans()->remove($team1fan); $subteam1->Fans()->remove($subteam1fan); $this->assertEquals(array('Richard'), $team1->Fans()->sort('Name')->column('Name')); $this->assertEquals(array(), $subteam1->Fans()->sort('Name')->column('Name')); $this->assertEmpty($team1fan->FavouriteID); $this->assertEmpty($team1fan->FavouriteClass); $this->assertEmpty($subteam1fan->FavouriteID); $this->assertEmpty($subteam1fan->FavouriteClass); }
/** * Test that related objects can be removed from a relation */ public function testRemoveRelation() { // Check that expected teams exist $list = DataObjectTest_Team::get(); $this->assertEquals(array('Subteam 1', 'Subteam 2', 'Subteam 3', 'Team 1', 'Team 2', 'Team 3'), $list->sort('Title')->column('Title')); // Test that each team has the correct fans $team1 = $this->objFromFixture('DataObjectTest_Team', 'team1'); $team2 = $this->objFromFixture('DataObjectTest_Team', 'team2'); $this->assertEquals(array('Bob', 'Joe'), $team1->Comments()->sort('Name')->column('Name')); $this->assertEquals(array('Phil'), $team2->Comments()->sort('Name')->column('Name')); // Test that removing comments from unrelated team has no effect $team1comment = $this->objFromFixture('DataObjectTest_TeamComment', 'comment1'); $team2comment = $this->objFromFixture('DataObjectTest_TeamComment', 'comment3'); $team1->Comments()->remove($team2comment); $team2->Comments()->remove($team1comment); $this->assertEquals(array('Bob', 'Joe'), $team1->Comments()->sort('Name')->column('Name')); $this->assertEquals(array('Phil'), $team2->Comments()->sort('Name')->column('Name')); $this->assertEquals($team1->ID, $team1comment->TeamID); $this->assertEquals($team2->ID, $team2comment->TeamID); // Test that removing items from the related team resets the has_one relations on the fan $team1comment = $this->objFromFixture('DataObjectTest_TeamComment', 'comment1'); $team2comment = $this->objFromFixture('DataObjectTest_TeamComment', 'comment3'); $team1->Comments()->remove($team1comment); $team2->Comments()->remove($team2comment); $this->assertEquals(array('Bob'), $team1->Comments()->sort('Name')->column('Name')); $this->assertEquals(array(), $team2->Comments()->sort('Name')->column('Name')); $this->assertEmpty($team1comment->TeamID); $this->assertEmpty($team2comment->TeamID); }
function testMethodAsValueField() { $list = DataObjectTest_Team::get(); $list->sort('Title'); $map = new SS_Map($list, 'ID', 'MyTitle'); $this->assertEquals(array('Team Subteam 1', 'Team Subteam 2', 'Team Subteam 3', 'Team Team 1', 'Team Team 2', 'Team Team 3'), $map->values()); }
public function testAddingWithMultipleForeignKeys() { $newPlayer = new DataObjectTest_Player(); $newPlayer->write(); $team1 = $this->objFromFixture('DataObjectTest_Team', 'team1'); $team2 = $this->objFromFixture('DataObjectTest_Team', 'team2'); $playersTeam1Team2 = DataObjectTest_Team::get()->relation('Players')->setForeignID(array($team1->ID, $team2->ID)); $playersTeam1Team2->add($newPlayer); $this->assertEquals(array($team1->ID, $team2->ID), $newPlayer->Teams()->sort('Title')->column('ID')); }
public function testSortByComplexExpression() { // Test an expression with both spaces and commas. This test also tests that column() can be called // with a complex sort expression, so keep using column() below $list = DataObjectTest_Team::get()->sort('CASE WHEN "DataObjectTest_Team"."ClassName" = \'DataObjectTest_SubTeam\' THEN 0 ELSE 1 END, "Title" DESC'); $this->assertEquals(array('Subteam 3', 'Subteam 2', 'Subteam 1', 'Team 3', 'Team 2', 'Team 1'), $list->column("Title")); }