Source of file ZenValidatorConstraintTest.php
Size: 11,614 Bytes - Last Modified: 2021-12-23T10:20:27+00:00
/var/www/docs.ssmods.com/process/src/tests/ZenValidatorConstraintTest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365 | <?php use SilverStripe\Forms\Form; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\TextField; use SilverStripe\Forms\FormAction; use SilverStripe\Control\Controller; use SilverStripe\Core\Config\Config; use SilverStripe\Dev\FunctionalTest; class ZenValidatorConstraintTest extends FunctionalTest { private $testController; private function getTestController() { if (!$this->testController) { $this->testController = Controller::curr(); } return $this->testController; } private function Form() { $fields = FieldList::create(TextField::create('Title'), TextField::create('Subtitle')); $actions = FieldList::create(FormAction::create('submit', 'submit')); $validator = ZenValidator::create(); return Form::create($this->getTestController(), 'Form', $fields, $actions, $validator); } public function setUp() { parent::setUp(); // Suppress themes Config::inst()->remove('SSViewer', 'theme'); } public function testRequired() { $zv = $this->Form()->getValidator(); $zv->addRequiredFields(array('Title')); // test attributes $field = $zv->getConstraint('Title', 'Constraint_required')->getField(); $this->assertTrue($field->getAttribute('data-parsley-required') == 'true'); // test valid $data['Title'] = 'Some Text'; $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = ''; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); } public function testMinLength() { $zv = $this->Form()->getValidator(); $zv->setConstraint('Title', Constraint_length::create('min', 5)); // test attributes $field = $zv->getConstraint('Title', 'Constraint_length')->getField(); $this->assertTrue($field->getAttribute('data-parsley-minlength') == '5'); // test valid $data['Title'] = 'Some Text'; $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = 'Some'; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); } public function testMaxLength() { $zv = $this->Form()->getValidator(); $zv->setConstraint('Title', Constraint_length::create('max', 5)); // test attributes $field = $zv->getConstraint('Title', 'Constraint_length')->getField(); $this->assertTrue($field->getAttribute('data-parsley-maxlength') == '5'); // test valid $data['Title'] = 'Some'; $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = 'Some Text'; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); } public function testRangeLength() { $zv = $this->Form()->getValidator(); $zv->setConstraint('Title', Constraint_length::create('range', 5, 10)); // test attributes $field = $zv->getConstraint('Title', 'Constraint_length')->getField(); $this->assertTrue($field->getAttribute('data-parsley-length') == '[5,10]'); // test valid $data['Title'] = 'Some Text'; $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = 'Some'; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); } public function testMinValue() { $zv = $this->Form()->getValidator(); $zv->setConstraint('Title', Constraint_value::create('min', 5)); // test attributes $field = $zv->getConstraint('Title', 'Constraint_value')->getField(); $this->assertTrue($field->getAttribute('data-parsley-min') == '5'); // test valid $data['Title'] = '6'; $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = '3'; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); $zv = $this->Form()->getValidator(); $zv->setConstraint('Title', Constraint_value::create('min', 5)); //test zero is invalid $data['Title'] = '0'; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); } public function testMaxValue() { $zv = $this->Form()->getValidator(); $zv->setConstraint('Title', Constraint_value::create('max', 5)); // test attributes $field = $zv->getConstraint('Title', 'Constraint_value')->getField(); $this->assertTrue($field->getAttribute('data-parsley-max') == '5'); // test valid $data['Title'] = '3'; $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = '6'; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); } public function testRangeValue() { $zv = $this->Form()->getValidator(); $zv->setConstraint('Title', Constraint_value::create('range', 5, 10)); // test attributes $field = $zv->getConstraint('Title', 'Constraint_value')->getField(); $this->assertTrue($field->getAttribute('data-parsley-range') == '[5,10]'); // test valid $data['Title'] = '6'; $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = '3'; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); } public function testRegex() { $zv = $this->Form()->getValidator(); $zv->setConstraint('Title', Constraint_regex::create("/^#(?:[0-9a-fA-F]{3}){1,2}$/")); // test attributes $field = $zv->getConstraint('Title', 'Constraint_regex')->getField(); $this->assertTrue($field->getAttribute('data-parsley-pattern') == "^#(?:[0-9a-fA-F]{3}){1,2}$"); // test valid $data['Title'] = '#ff0000'; $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = 'ff0000'; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); } public function testURLType() { $zv = $this->Form()->getValidator(); $zv->setConstraint('Title', Constraint_type::create('url')); // test attributes $field = $zv->getConstraint('Title', 'Constraint_type')->getField(); $this->assertTrue($field->getAttribute('data-parsley-type') == 'url'); // test valid $data['Title'] = 'http://www.things.com'; $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = 'www.things.com'; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); } public function testEmailType() { $zv = $this->Form()->getValidator(); $zv->setConstraint('Title', Constraint_type::create('email')); // test attributes $field = $zv->getConstraint('Title', 'Constraint_type')->getField(); $this->assertTrue($field->getAttribute('data-parsley-type') == 'email'); // test valid $data['Title'] = 'person@things.com'; $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = 'person@things'; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); } public function testNumberType() { $zv = $this->Form()->getValidator(); $zv->setConstraint('Title', Constraint_type::create('number')); // test attributes $field = $zv->getConstraint('Title', 'Constraint_type')->getField(); $this->assertTrue($field->getAttribute('data-parsley-type') == 'number'); // test valid $data['Title'] = '500'; $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = '$500'; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); } public function testAlphanumType() { $zv = $this->Form()->getValidator(); $zv->setConstraint('Title', Constraint_type::create('alphanum')); // test attributes $field = $zv->getConstraint('Title', 'Constraint_type')->getField(); $this->assertTrue($field->getAttribute('data-parsley-type') == 'alphanum'); // test valid $data['Title'] = '500tests'; $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = '500 tests + other things'; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); } public function testEqualto() { $form = $this->Form(); $zv = $form->getValidator(); $zv->setConstraint('Title', Constraint_equalto::create('Subtitle')); // test attributes $field = $zv->getConstraint('Title', 'Constraint_equalto')->getField(); $this->assertTrue($field->getAttribute('data-parsley-equalto') == '#Form_Form_Subtitle'); // test valid $data['Title'] = '500tests'; $data['Subtitle'] = '500tests'; $form->loadDataFrom($data); $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = '500tests'; $data['Subtitle'] = '600tests'; $form->loadDataFrom($data); $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); } public function testRemote() { // $form = $this->Form(); // $zv = $form->getValidator(); // $link = Director::absoluteURL($this->getTestController()->Link('remotetitlecheck')); // $zv->setConstraint('Title', Constraint_remote::create($link)); // $data['Title'] = 'valid title'; // $zv->php($data); // $this->assertEmpty($zv->getErrors()); // $data['Title'] = 'invalid title'; // $form->loadDataFrom($data); // $zv->php($data); // $errors = $zv->getErrors(); // $this->assertTrue($errors[0]['fieldName'] == 'Title'); // TODO // test attributes // test get/post options } public function testRemoteLocal() { // $form = $this->Form(); // $zv = $form->getValidator(); // $link = Director::makeRelative($this->getTestController()->Link('remotetitlecheck')); // $zv->setConstraint('Title', Constraint_remote::create($link)); // $data['Title'] = 'valid title'; // $zv->php($data); // $this->assertEmpty($zv->getErrors()); // $data['Title'] = 'invalid title'; // $form->loadDataFrom($data); // $zv->php($data); // $errors = $zv->getErrors(); // $this->assertTrue($errors[0]['fieldName'] == 'Title'); } } |