public function testFilterWithForm() { $form = new Form(); $form->setName('test_form'); $form->input('text')->addFilter(new RegexReplace('!\\s{2,}!', ' '))->addFilter(new CallbackFilter('trim')); $form->handle(new FormData('post', ['test_form' => 1, 'text' => 'hello world '])); $this->assertTrue($form->isValid()); $this->assertEquals('hello world', $form->getElements()['text']->getValue()); }
public function testHandleStringData() { $form = new Form(); $form->setName('test_form'); $checkbox = $form->checkbox('send_emails'); $this->assertEquals(0, $checkbox->getValue()); $this->assertFalse($checkbox->isChecked()); // submit checked value $form->handle(new FormData('post', ['test_form' => '1', 'send_emails' => '1'])); $this->assertEquals(1, $checkbox->getValue()); $this->assertTrue($checkbox->isChecked()); // submit unchecked value $form->handle(new FormData('post', ['test_form' => 1, 'send_emails' => 0])); $this->assertEquals(0, $checkbox->getValue()); $this->assertFalse($checkbox->isChecked()); }
public function testFormValidationCache() { $form = new Form(); $form->setName('user_registration'); $element = (new Input())->setName('test')->setValue('first'); $checkedItemsNum = 0; $element->addValidator(new CallBackValidator(function ($value) use(&$checkedItemsNum) { $checkedItemsNum++; return !empty($value); })); $form->setElement($element); # emulate form submit $form->handle(new FormData('post', [$form->getUid() => '1', 'test' => '123'])); $this->assertTrue($form->isValid()); $this->assertEquals(1, $checkedItemsNum); $this->assertTrue($form->isValid()); $this->assertTrue($form->isValid()); $this->assertEquals(1, $checkedItemsNum); }