Skip to content

Commit 73720c7

Browse files
committed
tests: added new tests for mapping
1 parent bae2ec5 commit 73720c7

File tree

3 files changed

+406
-161
lines changed

3 files changed

+406
-161
lines changed
Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Nette\Forms\Form;
6+
use Nette\Utils\ArrayHash;
7+
use Tester\Assert;
8+
9+
10+
require __DIR__ . '/../bootstrap.php';
11+
12+
13+
$_POST = [
14+
'title' => 'sent title',
15+
'first' => [
16+
'age' => '999',
17+
'second' => [
18+
'city' => 'sent city',
19+
],
20+
],
21+
];
22+
23+
24+
function createForm(): Form
25+
{
26+
$form = new Form;
27+
$form->addText('title');
28+
29+
$first = $form->addContainer('first');
30+
$first->addText('name');
31+
$first->addInteger('age');
32+
33+
$second = $first->addContainer('second');
34+
$second->addText('city');
35+
return $form;
36+
}
37+
38+
39+
test(function () { // setDefaults() + iterable
40+
$form = createForm();
41+
Assert::false($form->isSubmitted());
42+
43+
$form->setDefaults(ArrayHash::from([
44+
'title' => 'xxx',
45+
'extra' => '50',
46+
'first' => ArrayHash::from([
47+
'name' => 'yyy',
48+
'age' => '30',
49+
'second' => ArrayHash::from([
50+
'city' => 'zzz',
51+
]),
52+
]),
53+
]));
54+
55+
Assert::equal(ArrayHash::from([
56+
'title' => 'xxx',
57+
'first' => ArrayHash::from([
58+
'name' => 'yyy',
59+
'age' => '30',
60+
'second' => ArrayHash::from([
61+
'city' => 'zzz',
62+
]),
63+
]),
64+
]), $form->getValues());
65+
});
66+
67+
68+
test(function () { // submitted form + getValues()
69+
$_SERVER['REQUEST_METHOD'] = 'POST';
70+
71+
$form = createForm();
72+
Assert::truthy($form->isSubmitted());
73+
Assert::equal(ArrayHash::from([
74+
'title' => 'sent title',
75+
'first' => ArrayHash::from([
76+
'name' => '',
77+
'age' => '999',
78+
'second' => ArrayHash::from([
79+
'city' => 'sent city',
80+
]),
81+
]),
82+
]), $form->getValues());
83+
});
84+
85+
86+
test(function () { // submitted form + reset()
87+
$_SERVER['REQUEST_METHOD'] = 'POST';
88+
89+
$form = createForm();
90+
Assert::truthy($form->isSubmitted());
91+
92+
$form->reset();
93+
94+
Assert::false($form->isSubmitted());
95+
Assert::equal(ArrayHash::from([
96+
'title' => '',
97+
'first' => ArrayHash::from([
98+
'name' => '',
99+
'age' => null,
100+
'second' => ArrayHash::from([
101+
'city' => '',
102+
]),
103+
]),
104+
]), $form->getValues());
105+
});
106+
107+
108+
test(function () { // setValues() + iterable
109+
$_SERVER['REQUEST_METHOD'] = 'POST';
110+
111+
$form = createForm();
112+
Assert::truthy($form->isSubmitted());
113+
114+
$form->setValues(ArrayHash::from([
115+
'title' => 'new1',
116+
'first' => ArrayHash::from([
117+
'name' => 'new2',
118+
]),
119+
]));
120+
121+
Assert::equal(ArrayHash::from([
122+
'title' => 'new1',
123+
'first' => ArrayHash::from([
124+
'name' => 'new2',
125+
'age' => '999',
126+
'second' => ArrayHash::from([
127+
'city' => 'sent city',
128+
]),
129+
]),
130+
]), $form->getValues());
131+
132+
// erase
133+
$form->setValues(ArrayHash::from([
134+
'title' => 'new1',
135+
'first' => ArrayHash::from([
136+
'name' => 'new2',
137+
]),
138+
]), true);
139+
140+
Assert::equal(ArrayHash::from([
141+
'title' => 'new1',
142+
'first' => ArrayHash::from([
143+
'name' => 'new2',
144+
'age' => null,
145+
'second' => ArrayHash::from([
146+
'city' => '',
147+
]),
148+
]),
149+
]), $form->getValues());
150+
});
151+
152+
153+
test(function () { // onSuccess test
154+
$_SERVER['REQUEST_METHOD'] = 'POST';
155+
156+
$form = createForm();
157+
$form->onSuccess[] = function (Form $form, array $values) {
158+
Assert::same([
159+
'title' => 'sent title',
160+
'first' => [
161+
'name' => '',
162+
'age' => 999,
163+
'second' => [
164+
'city' => 'sent city',
165+
],
166+
],
167+
], $values);
168+
};
169+
170+
$form->onSuccess[] = function (Form $form, ArrayHash $values) {
171+
Assert::equal(ArrayHash::from([
172+
'title' => 'sent title',
173+
'first' => ArrayHash::from([
174+
'name' => '',
175+
'age' => 999,
176+
'second' => ArrayHash::from([
177+
'city' => 'sent city',
178+
]),
179+
]),
180+
]), $values);
181+
};
182+
183+
$form->onSuccess[] = function (Form $form, $values) {
184+
Assert::equal(ArrayHash::from([
185+
'title' => 'sent title',
186+
'first' => ArrayHash::from([
187+
'name' => '',
188+
'age' => 999,
189+
'second' => ArrayHash::from([
190+
'city' => 'sent city',
191+
]),
192+
]),
193+
]), $values);
194+
};
195+
196+
$ok = false;
197+
$form->onSuccess[] = function () use (&$ok) {
198+
$ok = true;
199+
};
200+
201+
$form->fireEvents();
202+
Assert::true($ok);
203+
});

0 commit comments

Comments
 (0)