From cffb11e568db61cc936cd88eb64fce826f5f58dd Mon Sep 17 00:00:00 2001 From: Daniel Hensby Date: Thu, 27 Aug 2015 17:56:22 +0100 Subject: [PATCH] TEST Ensure data is loaded into complete FieldList --- tests/forms/FormTest.php | 106 ++++++++++++++++++++++++++------------- 1 file changed, 71 insertions(+), 35 deletions(-) diff --git a/tests/forms/FormTest.php b/tests/forms/FormTest.php index 3631736b0..7773c6725 100644 --- a/tests/forms/FormTest.php +++ b/tests/forms/FormTest.php @@ -544,6 +544,26 @@ class FormTest extends FunctionalTest { $messageEls[0]->asXML() ); } + + 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() { return new Form( @@ -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'); - - protected $template = 'BlankPage'; - - public function Link($action = null) { - return Controller::join_links( - 'FormTest_ControllerWithStrictPostCheck', - $this->request->latestParam('Action'), - $this->request->latestParam('ID'), - $action - ); - } - - public function Form() { - $form = new Form( - $this, - 'Form', - new FieldList( - new EmailField('Email') - ), - new FieldList( - new FormAction('doSubmit') - ) - ); - $form->setFormMethod('POST'); - $form->setStrictFormMethodCheck(true); - $form->disableSecurityToken(); // Disable CSRF protection for easier form submission handling + private static $allowed_actions = array('Form'); + + protected $template = 'BlankPage'; + + public function Link($action = null) + { + return Controller::join_links( + 'FormTest_ControllerWithStrictPostCheck', + $this->request->latestParam('Action'), + $this->request->latestParam('ID'), + $action + ); + } + + public function Form() + { + $form = new Form( + $this, + 'Form', + new FieldList( + new EmailField('Email') + ), + new FieldList( + new FormAction('doSubmit') + ) + ); + $form->setFormMethod('POST'); + $form->setStrictFormMethodCheck(true); + $form->disableSecurityToken(); // Disable CSRF protection for easier form submission handling + + 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; + } - return $form; - } - - public function doSubmit($data, $form, $request) { - $form->sessionMessage('Test save was successful', 'good'); - return $this->redirectBack(); - } }