$t->ok($f->getWidgetSchema() == $widgetSchema, '->setWidgetSchema() sets the current widget schema'); $f->setWidgets($widgets); $schema = $f->getWidgetSchema(); $widgets['first_name']->setParent($schema); $widgets['last_name']->setParent($schema); $t->ok($schema['first_name'] == $widgets['first_name'], '->setWidgets() sets field widgets'); $t->ok($schema['last_name'] == $widgets['last_name'], '->setWidgets() sets field widgets'); $f->setWidget('name', $w3 = new sfWidgetFormInputText()); $w3->setParent($schema); $t->ok($f->getWidget('name') == $w3, '->setWidget() sets a widget for a field'); // ArrayAccess interface $t->diag('ArrayAccess interface'); $f = new FormTest(); $f->setWidgetSchema(new sfWidgetFormSchema(array('first_name' => new sfWidgetFormInputText(array('default' => 'Fabien')), 'last_name' => new sfWidgetFormInputText(), 'image' => new sfWidgetFormInputFile()))); $f->setValidatorSchema(new sfValidatorSchema(array('first_name' => new sfValidatorPass(), 'last_name' => new sfValidatorPass(), 'image' => new sfValidatorPass()))); $f->setDefaults(array('image' => 'default.gif')); $f->embedForm('embedded', new sfForm()); $t->ok($f['first_name'] instanceof sfFormField, '"sfForm" implements the ArrayAccess interface'); $t->is($f['first_name']->render(), '<input type="text" name="first_name" value="Fabien" id="first_name" />', '"sfForm" implements the ArrayAccess interface'); try { $f['image'] = 'image'; $t->fail('"sfForm" ArrayAccess implementation does not permit to set a form field'); } catch (LogicException $e) { $t->pass('"sfForm" ArrayAccess implementation does not permit to set a form field'); } $t->ok(isset($f['image']), '"sfForm" implements the ArrayAccess interface'); unset($f['image']); $t->ok(!isset($f['image']), '"sfForm" implements the ArrayAccess interface'); $t->ok(!array_key_exists('image', $f->getDefaults()), '"sfForm" ArrayAccess implementation removes form defaults'); $v = $f->getValidatorSchema(); $t->ok(!isset($v['image']), '"sfForm" ArrayAccess implementation removes the widget and the validator');
$t->is($f->getOption('bar'), 'foo', '->setOption() changes the value of an option'); sfForm::disableCSRFProtection(); // ->setDefault() ->getDefault() ->hasDefault() ->setDefaults() ->getDefaults() $t->diag('->setDefault() ->getDefault() ->hasDefault() ->setDefaults() ->getDefaults()'); $f = new FormTest(); $f->setDefaults(array('first_name' => 'Fabien')); $t->is($f->getDefaults(), array('first_name' => 'Fabien'), 'setDefaults() sets the form default values'); $f->setDefault('last_name', 'Potencier'); $t->is($f->getDefaults(), array('first_name' => 'Fabien', 'last_name' => 'Potencier'), 'setDefault() sets a default value'); $t->is($f->hasDefault('first_name'), true, 'hasDefault() returns true if the form has a default value for the given field'); $t->is($f->hasDefault('name'), false, 'hasDefault() returns false if the form does not have a default value for the given field'); $t->is($f->getDefault('first_name'), 'Fabien', 'getDefault() returns a default value for a given field'); $t->is($f->getDefault('name'), null, 'getDefault() returns null if the form does not have a default value for a given field'); sfForm::enableCSRFProtection('*mygreatsecret*'); $f = new FormTest(); $f->setDefaults(array('first_name' => 'Fabien')); $t->is($f->getDefault('_csrf_token'), $f->getCSRFToken('*mygreatsecret*'), '->getDefaults() keeps the CSRF token default value'); sfForm::disableCSRFProtection(); // ::enableCSRFProtection() ::disableCSRFProtection() ->isCSRFProtected() $t->diag('::enableCSRFProtection() ::disableCSRFProtection()'); sfForm::enableCSRFProtection(); $f1 = new FormTest(); $t->ok($f1->isCSRFProtected(), '::enableCSRFProtection() enabled CSRF protection for all future forms'); sfForm::disableCSRFProtection(); $f2 = new FormTest(); $t->ok(!$f2->isCSRFProtected(), '::disableCSRFProtection() disables CSRF protection for all future forms'); $t->ok($f1->isCSRFProtected(), '::enableCSRFProtection() enabled CSRF protection for all future forms'); sfForm::enableCSRFProtection(); $t->ok(!$f2->isCSRFProtected(), '::disableCSRFProtection() disables CSRF protection for all future forms'); $f = new FormTest(array(), array(), false); $t->ok(!$f->isCSRFProtected(), '->isCSRFProtected() returns true if the form is CSRF protected');