form = new Form($this, 'Form', new FieldList( new TextField('Title'), new TextField('Comment'), new TextField('URL') ), new FieldList()); $this->form->disableSecurityToken(); } public function testEnableSpamProtection() { Config::inst()->update( 'FormSpamProtectionExtension', 'default_spam_protector', 'FormSpamProtectionExtensionTest_FooProtector' ); $form = $this->form->enableSpamProtection(); $this->assertEquals('Foo', $form->Fields()->fieldByName('Captcha')->Title()); } public function testEnableSpamProtectionCustomProtector() { $form = $this->form->enableSpamProtection(array( 'protector' => 'FormSpamProtectionExtensionTest_BarProtector' )); $this->assertEquals('Bar', $form->Fields()->fieldByName('Captcha')->Title()); } public function testEnableSpamProtectionCustomTitle() { $form = $this->form->enableSpamProtection(array( 'protector' => 'FormSpamProtectionExtensionTest_BarProtector', 'title' => 'Baz', )); $this->assertEquals('Baz', $form->Fields()->fieldByName('Captcha')->Title()); } public function testCustomOptions() { $form = $this->form->enableSpamProtection(array( 'protector' => 'FormSpamProtectionExtensionTest_BazProtector', 'title' => 'Qux', 'name' => 'Borris' )); $this->assertEquals('Qux', $form->Fields()->fieldByName('Borris')->Title()); } public function testConfigurableName() { $field_name = "test_configurable_name"; Config::inst()->update( 'FormSpamProtectionExtension', 'default_spam_protector', 'FormSpamProtectionExtensionTest_FooProtector' ); Config::inst()->update( 'FormSpamProtectionExtension', 'field_name', $field_name ); $form = $this->form->enableSpamProtection(); // remove for subsequent tests Config::inst()->remove('FormSpamProtectionExtension', 'field_name'); // field should take up configured name $this->assertEquals('Foo', $form->Fields()->fieldByName($field_name)->Title()); } public function testInsertBefore() { $form = $this->form->enableSpamProtection(array( 'protector' => 'FormSpamProtectionExtensionTest_FooProtector', 'insertBefore' => 'URL' )); $fields = $form->Fields(); $this->assertEquals('Title', $fields[0]->Title()); $this->assertEquals('Comment', $fields[1]->Title()); $this->assertEquals('Foo', $fields[2]->Title()); $this->assertEquals('URL', $fields[3]->Title()); } public function testInsertBeforeMissing() { $form = $this->form->enableSpamProtection(array( 'protector' => 'FormSpamProtectionExtensionTest_FooProtector', 'insertBefore' => 'NotAField' )); // field should default to the end instead $fields = $form->Fields(); $this->assertEquals('Title', $fields[0]->Title()); $this->assertEquals('Comment', $fields[1]->Title()); $this->assertEquals('URL', $fields[2]->Title()); $this->assertEquals('Foo', $fields[3]->Title()); } }