Open Journal Systems  3.3.0
FormValidatorTest.php
1 <?php
2 
18 require_mock_env('env1');
19 
20 import('lib.pkp.tests.PKPTestCase');
21 import('lib.pkp.classes.form.Form');
22 
24  private
25  $form;
26 
27  protected function setUp() : void {
28  parent::setUp();
29  $this->form = new Form('some template');
30  }
31 
39  public function testConstructor() {
40  // Instantiate a test validator
41  import('lib.pkp.classes.validation.ValidatorUrl');
42  $validator = new ValidatorUrl();
43 
44  // Test CSS validation flags
45  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_OPTIONAL_VALUE, 'some.message.key');
46  self::assertEquals(array('testData' => array()), $this->form->cssValidation);
47  self::assertSame(FORM_VALIDATOR_OPTIONAL_VALUE, $formValidator->getType());
48 
49  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_REQUIRED_VALUE, 'some.message.key', $validator);
50  self::assertEquals(array('testData' => array('required')), $this->form->cssValidation);
51  self::assertSame(FORM_VALIDATOR_REQUIRED_VALUE, $formValidator->getType());
52 
53  // Test getters
54  self::assertSame('testData', $formValidator->getField());
55  self::assertSame($this->form, $formValidator->getForm());
56  self::assertSame($validator, $formValidator->getValidator());
57  }
58 
62  public function testGetMessage() {
63  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_REQUIRED_VALUE, 'some.message.key');
64  self::assertSame('##some.message.key##', $formValidator->getMessage());
65  }
66 
70  public function testGetFieldValue() {
71  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_REQUIRED_VALUE, 'some.message.key');
72  self::assertSame('', $formValidator->getFieldValue());
73 
74  $this->form->setData('testData', null);
75  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_REQUIRED_VALUE, 'some.message.key');
76  self::assertSame('', $formValidator->getFieldValue());
77 
78  $this->form->setData('testData', 0);
79  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_REQUIRED_VALUE, 'some.message.key');
80  self::assertSame('0', $formValidator->getFieldValue());
81 
82  $this->form->setData('testData', '0');
83  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_REQUIRED_VALUE, 'some.message.key');
84  self::assertSame('0', $formValidator->getFieldValue());
85 
86  $this->form->setData('testData', ' some text ');
87  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_REQUIRED_VALUE, 'some.message.key');
88  self::assertSame('some text', $formValidator->getFieldValue());
89 
90  $this->form->setData('testData', array(' some text '));
91  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_REQUIRED_VALUE, 'some.message.key');
92  self::assertSame(array(' some text '), $formValidator->getFieldValue());
93  }
94 
98  public function testIsEmptyAndOptional() {
99  // When the validation type is "required" then the method should return
100  // false even if the given data field is empty.
101  $this->form->setData('testData', '');
102  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_REQUIRED_VALUE, 'some.message.key');
103  self::assertFalse($formValidator->isEmptyAndOptional());
104 
105  // If the validation type is "optional" but the given data field is not empty
106  // then the method should also return false.
107  $this->form->setData('testData', 'something');
108  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_OPTIONAL_VALUE, 'some.message.key');
109  self::assertFalse($formValidator->isEmptyAndOptional());
110 
111  $this->form->setData('testData', array('something'));
112  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_OPTIONAL_VALUE, 'some.message.key');
113  self::assertFalse($formValidator->isEmptyAndOptional());
114 
115  // When the validation type is "optional" and the value empty then return true
116  $this->form->setData('testData', '');
117  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_OPTIONAL_VALUE, 'some.message.key');
118  self::assertTrue($formValidator->isEmptyAndOptional());
119 
120  // Test border conditions
121  $this->form->setData('testData', null);
122  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_OPTIONAL_VALUE, 'some.message.key');
123  self::assertTrue($formValidator->isEmptyAndOptional());
124 
125  $this->form->setData('testData', 0);
126  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_OPTIONAL_VALUE, 'some.message.key');
127  self::assertFalse($formValidator->isEmptyAndOptional());
128 
129  $this->form->setData('testData', '0');
130  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_OPTIONAL_VALUE, 'some.message.key');
131  self::assertFalse($formValidator->isEmptyAndOptional());
132 
133  $this->form->setData('testData', array());
134  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_OPTIONAL_VALUE, 'some.message.key');
135  self::assertTrue($formValidator->isEmptyAndOptional());
136  }
137 
141  public function testIsValid() {
142  // We don't need to test the case where a validator is set, this
143  // is sufficiently tested by the other FormValidator* tests.
144 
145  // Test default validation (without internal validator set and optional values)
146  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_OPTIONAL_VALUE, 'some.message.key');
147  self::assertTrue($formValidator->isValid());
148 
149  // Test default validation (without internal validator set and required values)
150  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_REQUIRED_VALUE, 'some.message.key');
151  self::assertFalse($formValidator->isValid());
152 
153  $this->form->setData('testData', array());
154  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_REQUIRED_VALUE, 'some.message.key');
155  self::assertFalse($formValidator->isValid());
156 
157  $this->form->setData('testData', 'some value');
158  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_REQUIRED_VALUE, 'some.message.key');
159  self::assertTrue($formValidator->isValid());
160 
161  $this->form->setData('testData', array('some value'));
162  $formValidator = new FormValidator($this->form, 'testData', FORM_VALIDATOR_REQUIRED_VALUE, 'some.message.key');
163  self::assertTrue($formValidator->isValid());
164  }
165 }
166 
FormValidatorTest\setUp
setUp()
Definition: FormValidatorTest.php:27
FormValidatorTest
Test class for FormValidator.
Definition: FormValidatorTest.php:23
FormValidatorTest\testIsValid
testIsValid()
Definition: FormValidatorTest.php:141
PKPTestCase
Class that implements functionality common to all PKP unit test cases.
Definition: PKPTestCase.inc.php:27
ValidatorUrl
Validation check for URLs.
Definition: ValidatorUrl.inc.php:20
FormValidatorTest\testGetFieldValue
testGetFieldValue()
Definition: FormValidatorTest.php:70
FormValidator
Class to represent a form validation check.
Definition: FormValidator.inc.php:23
FormValidatorTest\testConstructor
testConstructor()
Definition: FormValidatorTest.php:39
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
FormValidatorTest\testGetMessage
testGetMessage()
Definition: FormValidatorTest.php:62
FormValidatorTest\testIsEmptyAndOptional
testIsEmptyAndOptional()
Definition: FormValidatorTest.php:98