silverstripe-cms/tests/MemberTableFieldTest.php
Ingo Schommer 0a137a4840 ENHANCEMENT Making setting optional in MemberTableField. Field instances without will list all members unfiltered, and remove members from the database rather than the group relation.
ENHANCEMENT Allow disabling of 'inline add' formfields in a MemberTableField through setPermissions(array('inlineadd')) (from r98825)

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/branches/2.4@99677 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 17:52:58 +13:00

101 lines
2.8 KiB
PHP

<?php
class MemberTableFieldTest extends SapphireTest {
static $fixture_file = 'cms/tests/MemberTableFieldTest.yml';
function testLimitsToMembersInGroup() {
$member1 = $this->objFromFixture('Member', 'member1');
$member2 = $this->objFromFixture('Member', 'member2');
$member3 = $this->objFromFixture('Member', 'member3');
$group1 = $this->objFromFixture('Group', 'group1');
$tf = new MemberTableField(
$this,
"Members",
$group1
);
$members = $tf->sourceItems();
$this->assertContains($member1->ID, $members->column('ID'),
'Members in the associated group are listed'
);
$this->assertContains($member2->ID, $members->column('ID'),
'Members in children groups are listed as well'
);
$this->assertNotContains($member3->ID, $members->column('ID'),
'Members in other groups are filtered out'
);
}
function testShowsAllMembersWithoutGroupParameter() {
$member1 = $this->objFromFixture('Member', 'member1');
$member2 = $this->objFromFixture('Member', 'member2');
$member3 = $this->objFromFixture('Member', 'member3');
$group1 = $this->objFromFixture('Group', 'group1');
$tf = new MemberTableField(
$this,
"Members"
// no group assignment
);
$members = $tf->sourceItems();
$this->assertContains($member1->ID, $members->column('ID'),
'Members in the associated group are listed'
);
$this->assertContains($member2->ID, $members->column('ID'),
'Members in children groups are listed as well'
);
$this->assertContains($member3->ID, $members->column('ID'),
'Members in other groups are listed'
);
}
function testDeleteWithGroupOnlyDeletesRelation() {
$member1 = $this->objFromFixture('Member', 'member1');
$group1 = $this->objFromFixture('Group', 'group1');
$tf = new MemberTableField(
$this,
"Members",
$group1
);
$tfItem = new MemberTableField_ItemRequest($tf, $member1->ID);
$tfItem->delete();
$group1->flushCache();
$this->assertNotContains($member1->ID, $group1->Members()->column('ID'),
'Member relation to group is removed'
);
$this->assertType(
'DataObject',
DataObject::get_by_id('Member', $member1->ID),
'Member record still exists'
);
}
function testDeleteWithoutGroupDeletesFromDatabase() {
$member1 = $this->objFromFixture('Member', 'member1');
$member1ID = $member1->ID;
$group1 = $this->objFromFixture('Group', 'group1');
$tf = new MemberTableField(
$this,
"Members"
// no group assignment
);
$tfItem = new MemberTableField_ItemRequest($tf, $member1->ID);
$tfItem->delete();
$group1->flushCache();
$this->assertNotContains($member1->ID, $group1->Members()->column('ID'),
'Member relation to group is removed'
);
DataObject::flush_and_destroy_cache();
$this->assertFalse(
DataObject::get_by_id('Member', $member1ID),
'Member record is removed from database'
);
}
}