Beispiel #1
0
 function testValidation()
 {
     $r = Request::create('/', 'POST', array('name' => 123, 'age' => 3));
     $f = new Form($r);
     $arr = array(1 => 'One', 2 => 'Two');
     $f->addCheckbox('is_active')->setDefaultValue(1);
     $f->addInput('name')->addFilter('!^[a-z]+$!i')->setDefaultValue('hello');
     $f->addSelect('age')->setOptions($arr)->setIsRequired(true);
     $this->assertTrue($f->checkRequestHasValue('name'));
     $this->assertFalse($f->checkRequestHasValue('non_exists'));
     $this->assertFalse($f->getErrors(), 'До валидации ошибок нет');
     $this->assertFalse($f->getValues(), 'Валидных данных нет');
     $this->assertFalse($f->validate(), 'Валидация из Request');
     $this->assertFalse($f->isValid(), 'Есть ошибки');
     $exp = array('Поле "name" заполнено некорректно', 'Поле "age" заполнено некорректно');
     $this->assertEquals($exp, $f->getErrors(), 'Массив ошибок');
     $exp = 'Поле "name" заполнено некорректно<br />Поле "age" заполнено некорректно';
     $this->assertEquals($exp, $f->getErrors('<br />'), 'Ошибки строкой');
     $f->reset();
     $this->assertFalse($f->getErrors(), 'После сброса ошибок нет');
     $arr = array('name' => 'John', 'age' => 2, 'unused' => 123);
     $this->assertTrue($f->validate($arr), 'Валидация произвольных данных');
     $this->assertEquals(array('is_active' => false, 'name' => 'John', 'age' => 2), $f->getValues(), 'Чистые данные после валидации');
     $this->assertEquals('John', $f->getValue('name'), 'Получение значения по имени поля');
 }