TEST Ensure data is loaded into complete FieldList

This commit is contained in:
Daniel Hensby 2015-08-27 17:56:22 +01:00
parent 5911d50bca
commit cffb11e568

View File

@ -545,6 +545,26 @@ class FormTest extends FunctionalTest {
); );
} }
public function testGetExtraFields()
{
$form = new FormTest_ExtraFieldsForm(
new FormTest_Controller(),
'Form',
new FieldList(new TextField('key1')),
new FieldList()
);
$data = array(
'key1' => 'test',
'ExtraFieldCheckbox' => false,
);
$form->loadDataFrom($data);
$formData = $form->getData();
$this->assertEmpty($formData['ExtraFieldCheckbox']);
}
protected function getStubForm() { protected function getStubForm() {
return new Form( return new Form(
new FormTest_Controller(), new FormTest_Controller(),
@ -673,41 +693,57 @@ class FormTest_ControllerWithSecurityToken extends Controller implements TestOnl
} }
class FormTest_ControllerWithStrictPostCheck extends Controller implements TestOnly { class FormTest_ControllerWithStrictPostCheck extends Controller implements TestOnly
{
private static $allowed_actions = array('Form'); private static $allowed_actions = array('Form');
protected $template = 'BlankPage'; protected $template = 'BlankPage';
public function Link($action = null) { public function Link($action = null)
return Controller::join_links( {
'FormTest_ControllerWithStrictPostCheck', return Controller::join_links(
$this->request->latestParam('Action'), 'FormTest_ControllerWithStrictPostCheck',
$this->request->latestParam('ID'), $this->request->latestParam('Action'),
$action $this->request->latestParam('ID'),
); $action
} );
}
public function Form() { public function Form()
$form = new Form( {
$this, $form = new Form(
'Form', $this,
new FieldList( 'Form',
new EmailField('Email') new FieldList(
), new EmailField('Email')
new FieldList( ),
new FormAction('doSubmit') new FieldList(
) new FormAction('doSubmit')
); )
$form->setFormMethod('POST'); );
$form->setStrictFormMethodCheck(true); $form->setFormMethod('POST');
$form->disableSecurityToken(); // Disable CSRF protection for easier form submission handling $form->setStrictFormMethodCheck(true);
$form->disableSecurityToken(); // Disable CSRF protection for easier form submission handling
return $form; return $form;
} }
public function doSubmit($data, $form, $request)
{
$form->sessionMessage('Test save was successful', 'good');
return $this->redirectBack();
}
}
class FormTest_ExtraFieldsForm extends Form implements TestOnly {
public function getExtraFields() {
$fields = parent::getExtraFields();
$fields->push(new CheckboxField('ExtraFieldCheckbox', 'Extra Field Checkbox', 1));
return $fields;
}
public function doSubmit($data, $form, $request) {
$form->sessionMessage('Test save was successful', 'good');
return $this->redirectBack();
}
} }