예제 #1
0
 function testHasItemsWhenSetAsArray()
 {
     $tf = new TableField('TestTableField', 'TableFieldTest_HasManyRelation', array('Value' => 'Value'), array('Value' => 'TextField'));
     $tf->setValue(array('new' => array('Value' => array('One', 'Two'))));
     $items = $tf->Items();
     $itemsArr = $items->toArray();
     // includes the two values and an "add" row
     $this->assertEquals($items->Count(), 3);
     // first row
     $this->assertEquals($itemsArr[0]->Fields()->fieldByName('TestTableField[new][Value][]')->Value(), 'One');
     // second row
     $this->assertEquals($itemsArr[1]->Fields()->fieldByName('TestTableField[new][Value][]')->Value(), 'Two');
 }
예제 #2
0
 function testTableFieldSaving()
 {
     $group = $this->objFromFixture('Group', 'a');
     $tableField = new TableField("Permissions", "Permission", array("Code" => _t('SecurityAdmin.CODE', 'Code'), "Arg" => _t('SecurityAdmin.OPTIONALID', 'Optional ID')), array("Code" => "PermissionDropdownField", "Arg" => "TextField"), "GroupID", $group->ID);
     $form = new Form(new TableFieldTest_Controller(), "Form", new FieldSet($tableField), new FieldSet());
     /* The field starts emppty.  Save some new data.  We have replicated the array structure that the specific layout of the form generates. */
     $tableField->setValue(array('new' => array('Code' => array('CMS_ACCESS_CMSMain', 'CMS_ACCESS_AssetAdmin'), 'Arg' => array('1', '2'))));
     $tableField->saveInto($group);
     /* Let's check that the 2 permissions entries have been saved */
     $permissions = $group->Permissions()->toDropdownMap('Arg', 'Code');
     $this->assertEquals(array(1 => 'CMS_ACCESS_CMSMain', 2 => 'CMS_ACCESS_AssetAdmin'), $permissions);
     /* Now let's perform an update query */
     $value = array();
     foreach ($group->Permissions() as $permission) {
         $value[$permission->ID] = array("Code" => $permission->Code, "Arg" => $permission->Arg);
     }
     $value['new'] = array('Code' => array('CMS_ACCESS_NewsletterAdmin'), 'Arg' => array('3'));
     $tableField->setValue($value);
     $tableField->saveInto($group);
     /* Let's check that the 2 existing permissions entries, and the 1 new one, have been saved */
     $permissions = $group->Permissions()->toDropdownMap('Arg', 'Code');
     $this->assertEquals(array(1 => 'CMS_ACCESS_CMSMain', 2 => 'CMS_ACCESS_AssetAdmin', 3 => 'CMS_ACCESS_NewsletterAdmin'), $permissions);
 }