OSDN Git Service

- moved plugin related Test file to "Plugin" dir.
[ethna/ethna.git] / test / Plugin / Validator / Ethna_Plugin_Validator_Required_Test.php
1 <?php
2 // vim: foldmethod=marker
3 /**
4  *  Ethna_Plugin_Validator_Required_Test.php
5  */
6
7 /**
8  *  Ethna_Plugin_Validator_Requiredクラスのテストケース
9  *
10  *  @access public
11  */
12 class Ethna_Plugin_Validator_Required_Test extends Ethna_UnitTestBase
13 {
14     var $vld;
15
16     function setUp()
17     {
18         $ctl =& Ethna_Controller::getInstance();
19         $plugin =& $ctl->getPlugin();
20         $this->vld = $plugin->getPlugin('Validator', 'Required');
21     }
22
23     // {{{ test form type text.
24     function test_formtext()
25     {
26         //    required => false でテキストフォームに文字列を入力する場合
27         $form_string = array(
28                              'type'          => VAR_TYPE_STRING,
29                              'required'      => false,
30                              'form_type'     => FORM_TYPE_TEXT,
31                              );
32         $this->vld->af->setDef('namae_string', $form_string);
33
34         $pear_error = $this->vld->validate('namae_string', 10, $form_string);
35         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
36
37         $pear_error = $this->vld->validate('namae_string', '', $form_string);
38         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
39
40         $pear_error = $this->vld->validate('namae_string', false, $form_string);
41         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
42
43         $pear_error = $this->vld->validate('namae_string', null, $form_string);
44         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
45
46         //    required => true でテキストフォームに文字列を入力する場合
47         $form_string = array(
48                              'type'          => VAR_TYPE_STRING,
49                              'required'      => true,
50                              'form_type'     => FORM_TYPE_TEXT,
51                              'error'         => 'フォーム値必須エラー'
52                              );
53         $this->vld->af->setDef('namae_string', $form_string);
54
55         $pear_error = $this->vld->validate('namae_string', 10, $form_string);
56         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
57
58         // 必須フォームに入力がない
59         $pear_error = $this->vld->validate('namae_string', '', $form_string);
60         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
61         $this->assertEqual(E_FORM_REQUIRED, $pear_error->getCode());
62         $this->assertEqual($form_string['error'], $pear_error->getMessage());
63
64         $pear_error = $this->vld->validate('namae_string', false, $form_string);
65         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
66         $this->assertEqual($form_string['error'], $pear_error->getMessage());
67
68         $pear_error = $this->vld->validate('namae_string', null, $form_string);
69         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
70         $this->assertEqual($form_string['error'], $pear_error->getMessage());
71     }
72     // }}}
73
74     // {{{ test form type select 
75     function test_formselect()
76     {
77         $form_select = array(
78                              'type'          => VAR_TYPE_STRING,
79                              'required'      => false,
80                              'form_type'     => FORM_TYPE_SELECT,
81                              'error'         => 'フォーム値必須エラー'
82                              );
83         $this->vld->af->setDef('namae_select', $form_select);
84
85         $pear_error = $this->vld->validate('namae_select', 'selection', $form_select);
86         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
87
88         $pear_error = $this->vld->validate('namae_select', '', $form_select);
89         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
90
91         $pear_error = $this->vld->validate('namae_select', false, $form_select);
92         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
93
94         $pear_error = $this->vld->validate('namae_select', null, $form_select);
95         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
96
97         $form_select = array(
98                              'type'          => VAR_TYPE_STRING,
99                              'required'      => true,
100                              'form_type'     => FORM_TYPE_SELECT,
101                              'error'         => 'フォーム値必須エラー'
102                              );
103         $this->vld->af->setDef('namae_select', $form_select);
104
105         $pear_error = $this->vld->validate('namae_select', 'selection', $form_select);
106         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
107
108         // 必須フォームが選択されない
109         $pear_error = $this->vld->validate('namae_select', '', $form_select);
110         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
111         $this->assertEqual(E_FORM_REQUIRED, $pear_error->getCode());
112         $this->assertEqual($form_select['error'], $pear_error->getMessage());
113
114         $pear_error = $this->vld->validate('namae_select', false, $form_select);
115         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
116         $this->assertEqual(E_FORM_REQUIRED, $pear_error->getCode());
117         $this->assertEqual($form_select['error'], $pear_error->getMessage());
118
119         $pear_error = $this->vld->validate('namae_select', null, $form_select);
120         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
121         $this->assertEqual(E_FORM_REQUIRED, $pear_error->getCode());
122         $this->assertEqual($form_select['error'], $pear_error->getMessage());
123     }
124     //  }}}
125
126     // {{{ test form type radio
127     function test_formradio()
128     {
129         $form_radio = array(
130                             'type'          => VAR_TYPE_STRING,
131                             'required'      => false,
132                             'form_type'     => FORM_TYPE_RADIO,
133                             'error'         => 'フォーム値必須エラー'
134                             );
135         $this->vld->af->setDef('namae_radio', $form_radio);
136
137         $pear_error = $this->vld->validate('namae_radio', 'radio', $form_radio);
138         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
139
140         $pear_error = $this->vld->validate('namae_radio', '', $form_radio);
141         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
142
143         $pear_error = $this->vld->validate('namae_radio', false, $form_radio);
144         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
145
146         $pear_error = $this->vld->validate('namae_radio', null, $form_radio);
147         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
148
149
150         $form_radio = array(
151                             'type'          => VAR_TYPE_STRING,
152                             'required'      => true,
153                             'form_type'     => FORM_TYPE_RADIO,
154                             'error'         => 'フォーム値必須エラー'
155                             );
156         $this->vld->af->setDef('namae_radio', $form_radio);
157
158         $pear_error = $this->vld->validate('namae_radio', 'radio', $form_radio);
159         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
160
161         // 必須フォームが選択されない
162         $pear_error = $this->vld->validate('namae_radio', '', $form_radio);
163         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
164         $this->assertEqual(E_FORM_REQUIRED, $pear_error->getCode());
165         $this->assertEqual($form_radio['error'], $pear_error->getMessage());
166
167         $pear_error = $this->vld->validate('namae_radio', false, $form_radio);
168         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
169         $this->assertEqual(E_FORM_REQUIRED, $pear_error->getCode());
170         $this->assertEqual($form_radio['error'], $pear_error->getMessage());
171
172         $pear_error = $this->vld->validate('namae_radio', null, $form_radio);
173         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
174         $this->assertEqual(E_FORM_REQUIRED, $pear_error->getCode());
175         $this->assertEqual($form_radio['error'], $pear_error->getMessage());
176     }
177     //  }}}
178
179     // {{{ test form type checkbox 
180     function test_formcheckbox()
181     {
182         $form_checkbox = array(
183                                'required'      => false,
184                                'form_type'     => FORM_TYPE_CHECKBOX,
185                                'type'          => array(VAR_TYPE_BOOLEAN),
186                                'error'         => 'フォーム値必須エラー',
187                                );
188         $this->vld->af->setDef('namae_checkbox', $form_checkbox);
189
190         $checks = array(
191                         '1st' => 0,
192                         '2nd' => 1,
193                         '3rd' => 3,
194                         '4th' => 'value'
195                         );
196         $pear_error = $this->vld->validate('namae_checkbox', $checks, $form_checkbox);
197         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
198
199         $checks = array();
200         $pear_error = $this->vld->validate('namae_checkbox', $checks, $form_checkbox);
201         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
202
203         $pear_error = $this->vld->validate('namae_checkbox', null, $form_checkbox);
204         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
205
206         $pear_error = $this->vld->validate('namae_checkbox', false, $form_checkbox);
207         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
208
209
210         $form_checkbox = array(
211                                'required'      => true,
212                                'form_type'     => FORM_TYPE_CHECKBOX,
213                                'type'          => array(VAR_TYPE_BOOLEAN),
214                                'error'         => 'フォーム値必須エラー',
215                                );
216         $this->vld->af->setDef('namae_checkbox', $form_checkbox);
217
218         $checks = array(
219                         '1st' => 0,
220                         '2nd' => 1,
221                         '3rd' => 3,
222                         '4th' => 'value'
223                         );
224         $pear_error = $this->vld->validate('namae_checkbox', $checks, $form_checkbox);
225         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
226
227         // 必須フォームが選択されない
228         $checks = array();
229         $pear_error = $this->vld->validate('namae_checkbox', $checks, $form_checkbox);
230         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
231         $this->assertEqual(E_FORM_REQUIRED, $pear_error->getCode());
232         $this->assertEqual($form_checkbox['error'], $pear_error->getMessage());
233
234         $pear_error = $this->vld->validate('namae_checkbox', null, $form_checkbox);
235         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
236         $this->assertEqual(E_FORM_REQUIRED, $pear_error->getCode());
237         $this->assertEqual($form_checkbox['error'], $pear_error->getMessage());
238
239         $pear_error = $this->vld->validate('namae_checkbox', false, $form_checkbox);
240         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
241         $this->assertEqual(E_FORM_REQUIRED, $pear_error->getCode());
242         $this->assertEqual($form_checkbox['error'], $pear_error->getMessage());
243
244
245         $form_checkbox = array(
246                                'required'      => true,
247                                'form_type'     => FORM_TYPE_CHECKBOX,
248                                'type'          => array(VAR_TYPE_BOOLEAN),
249                                'error'         => 'フォーム値必須エラー',
250                                'key'           => '4th',
251                                'num'           => 4,
252                                );
253         $this->vld->af->setDef('namae_checkbox', $form_checkbox);
254
255         $checks = array(
256                         '1st' => 0,
257                         '2nd' => 1,
258                         '3rd' => 3,
259                         '4th' => 'value'
260                         );
261         $pear_error = $this->vld->validate('namae_checkbox', $checks, $form_checkbox);
262         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
263
264         // 何らかの処理でfalseに書き換えてしまった場合はエラー
265         $checks = array(
266                         '1st' => 0,
267                         '2nd' => 1,
268                         '3rd' => 3,
269                         '4th' => false
270                         );
271         $pear_error = $this->vld->validate('namae_checkbox', $checks, $form_checkbox);
272         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
273         $this->assertEqual(E_FORM_REQUIRED, $pear_error->getCode());
274         $this->assertEqual($form_checkbox['error'], $pear_error->getMessage());
275
276         // num error
277         $checks = array(
278                         '1st' => 0,
279                         '2nd' => 1,
280                         '3rd' => 'value'
281                         );
282         $pear_error = $this->vld->validate('namae_checkbox', $checks, $form_checkbox);
283         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
284         $this->assertEqual(E_FORM_REQUIRED, $pear_error->getCode());
285         $this->assertEqual($form_checkbox['error'], $pear_error->getMessage());
286
287         // key error
288         $checks = array(
289                         '1st' => 0,
290                         '2nd' => 'value',
291                         '3rd' => 2,
292                         '4' => 3
293                         );
294         $pear_error = $this->vld->validate('namae_checkbox', $checks, $form_checkbox);
295         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
296         $this->assertEqual(E_FORM_REQUIRED, $pear_error->getCode());
297         $this->assertEqual($form_checkbox['error'], $pear_error->getMessage());
298     }
299     //  }}}
300 }
301
302 ?>