17 import(
'lib.pkp.tests.PKPTestCase');
18 import(
'lib.pkp.classes.form.Form');
22 $checkedValues = array(),
27 protected function setUp() : void {
29 $this->form =
new Form(
'some template');
30 $this->subfieldValidation = array($this,
'userFunctionForSubfields');
31 $this->localeFieldValidation = array($this,
'userFunctionForLocaleFields');
42 $this->form->setData(
'testData',
'');
43 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_OPTIONAL_VALUE,
'some.message.key', $this->subfieldValidation, array(
false));
44 self::assertTrue($validator->isValid());
45 self::assertEquals(array(), $validator->getErrorFields());
46 self::assertSame(array(), $this->checkedValues);
48 $this->form->setData(
'testData', array());
49 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_OPTIONAL_VALUE,
'some.message.key', $this->subfieldValidation, array(
false));
50 self::assertTrue($validator->isValid());
51 self::assertEquals(array(), $validator->getErrorFields());
52 self::assertSame(array(), $this->checkedValues);
55 $this->form->setData(
'testData', array(
'subfield1' => array(),
'subfield2' =>
''));
56 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_OPTIONAL_VALUE,
'some.message.key', $this->subfieldValidation, array(
false));
57 self::assertTrue($validator->isValid());
58 self::assertEquals(array(), $validator->getErrorFields());
59 self::assertSame(array(), $this->checkedValues);
61 $this->form->setData(
'testData', array(
'subfield1' => array(
'subsubfield1' => array(),
'subsubfield2' =>
'')));
62 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_OPTIONAL_VALUE,
'some.message.key', $this->subfieldValidation, array(
false),
false, array(
'subsubfield1',
'subsubfield2'));
63 self::assertTrue($validator->isValid());
64 self::assertEquals(array(), $validator->getErrorFields());
65 self::assertSame(array(), $this->checkedValues);
74 $this->form->setData(
'testData',
'');
75 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->subfieldValidation, array(
true));
76 self::assertFalse($validator->isValid());
77 self::assertEquals(array(), $validator->getErrorFields());
78 self::assertSame(array(), $this->checkedValues);
88 $this->form->setData(
'testData', array(
'subfield1' =>
'abc',
'subfield2' =>
'0'));
89 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->subfieldValidation, array(
true));
90 self::assertTrue($validator->isValid());
91 self::assertEquals(array(), $validator->getErrorFields());
92 self::assertSame(array(
'abc',
'0'), $this->checkedValues);
93 $this->checkedValues = array();
96 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->subfieldValidation, array(
false),
true);
97 self::assertTrue($validator->isValid());
98 self::assertEquals(array(), $validator->getErrorFields());
99 self::assertSame(array(
'abc',
'0'), $this->checkedValues);
100 $this->checkedValues = array();
103 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->subfieldValidation, array(
false));
104 self::assertFalse($validator->isValid());
105 self::assertEquals(array(
'testData[subfield1]',
'testData[subfield2]'), $validator->getErrorFields());
106 self::assertSame(array(
'abc',
'0'), $this->checkedValues);
107 $this->checkedValues = array();
110 $this->form->setData(
'testData', array(
'en_US' =>
'abc',
'de_DE' =>
'def'));
111 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->localeFieldValidation, array(
true),
false, array(),
true);
112 self::assertTrue($validator->isValid());
113 self::assertEquals(array(), $validator->getErrorFields());
114 self::assertSame(array(
'en_US' => array(
'abc'),
'de_DE' => array(
'def')), $this->checkedValues);
115 $this->checkedValues = array();
118 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->localeFieldValidation, array(
false),
false, array(),
true);
119 self::assertFalse($validator->isValid());
120 self::assertEquals(array(
'en_US' =>
'testData[en_US]',
'de_DE' =>
'testData[de_DE]'), $validator->getErrorFields());
121 self::assertSame(array(
'en_US' => array(
'abc'),
'de_DE' => array(
'def')), $this->checkedValues);
122 $this->checkedValues = array();
133 'subfield1' => array(
'subsubfield1' =>
'abc',
'subsubfield2' =>
'def'),
134 'subfield2' => array(
'subsubfield1' =>
'0',
'subsubfield2' => 0)
136 $this->form->setData(
'testData', $testArray);
137 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->subfieldValidation, array(
true),
false, array(
'subsubfield1',
'subsubfield2'));
138 self::assertTrue($validator->isValid());
139 self::assertEquals(array(), $validator->getErrorFields());
140 self::assertSame(array(
'abc',
'def',
'0', 0), $this->checkedValues);
141 $this->checkedValues = array();
144 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->subfieldValidation, array(
false),
true, array(
'subsubfield1',
'subsubfield2'));
145 self::assertTrue($validator->isValid());
146 self::assertEquals(array(), $validator->getErrorFields());
147 self::assertSame(array(
'abc',
'def',
'0', 0), $this->checkedValues);
148 $this->checkedValues = array();
151 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->subfieldValidation, array(
false),
false, array(
'subsubfield1',
'subsubfield2'));
152 self::assertFalse($validator->isValid());
153 $expectedErrors = array(
154 'testData[subfield1][subsubfield1]',
'testData[subfield1][subsubfield2]',
155 'testData[subfield2][subsubfield1]',
'testData[subfield2][subsubfield2]'
157 self::assertEquals($expectedErrors, $validator->getErrorFields());
158 self::assertSame(array(
'abc',
'def',
'0', 0), $this->checkedValues);
159 $this->checkedValues = array();
163 'en_US' => array(
'subsubfield1' =>
'abc',
'subsubfield2' =>
'def'),
164 'de_DE' => array(
'subsubfield1' =>
'uvw',
'subsubfield2' =>
'xyz')
166 $this->form->setData(
'testData', $testArray);
167 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->localeFieldValidation, array(
true),
false, array(
'subsubfield1',
'subsubfield2'),
true);
168 self::assertTrue($validator->isValid());
169 self::assertEquals(array(), $validator->getErrorFields());
170 self::assertSame(array(
'en_US' => array(
'abc',
'def'),
'de_DE' => array(
'uvw',
'xyz')), $this->checkedValues);
171 $this->checkedValues = array();
174 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->localeFieldValidation, array(
false),
false, array(
'subsubfield1',
'subsubfield2'),
true);
175 self::assertFalse($validator->isValid());
176 $expectedErrors = array(
178 'testData[en_US][subsubfield1]',
'testData[en_US][subsubfield2]'
181 'testData[de_DE][subsubfield1]',
'testData[de_DE][subsubfield2]'
184 self::assertEquals($expectedErrors, $validator->getErrorFields());
185 self::assertSame(array(
'en_US' => array(
'abc',
'def'),
'de_DE' => array(
'uvw',
'xyz')), $this->checkedValues);
186 $this->checkedValues = array();
198 'subfield1' => array(
'subsubfield1' =>
null,
'subsubfield2' =>
''),
199 'subfield2' => array(
'subsubfield2' => 0)
201 $this->form->setData(
'testData', $testArray);
202 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->subfieldValidation, array(
true),
false, array(
'subsubfield1',
'subsubfield2'));
203 self::assertTrue($validator->isValid());
204 self::assertEquals(array(), $validator->getErrorFields());
205 self::assertSame(array(
null,
'',
null, 0), $this->checkedValues);
206 $this->checkedValues = array();
209 $testArray = array(
'subfield1' =>
'abc',
'subfield2' =>
'def');
210 $this->form->setData(
'testData', $testArray);
211 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->subfieldValidation, array(
true),
false, array(
'subsubfield'));
212 self::assertFalse($validator->isValid());
213 self::assertEquals(array(
'testData[subfield1]',
'testData[subfield2]'), $validator->getErrorFields());
214 self::assertSame(array(), $this->checkedValues);
215 $this->checkedValues = array();
218 $testArray = array(
'en_US' =>
'abc',
'de_DE' =>
'def');
219 $this->form->setData(
'testData', $testArray);
220 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->localeFieldValidation, array(
true),
false, array(
'subsubfield'),
true);
221 self::assertFalse($validator->isValid());
222 self::assertEquals(array(
'en_US' =>
'testData[en_US]',
'de_DE' =>
'testData[de_DE]'), $validator->getErrorFields());
223 self::assertSame(array(), $this->checkedValues);
224 $this->checkedValues = array();
232 $this->form->setData(
'testData', array(
'subfield' =>
'abc'));
233 $validator =
new FormValidatorArrayCustom($this->form,
'testData', FORM_VALIDATOR_REQUIRED_VALUE,
'some.message.key', $this->subfieldValidation);
234 self::assertTrue($validator->isArray());
236 $this->form->setData(
'testData',
'field');
237 self::assertFalse($validator->isArray());
251 $this->checkedValues[] = $value;
252 return $additionalArgument;
268 if (!isset($this->checkedValues[$key])) $this->checkedValues[$key] = array();
269 $this->checkedValues[$key][] = $value;
270 return $additionalArgument;