@@ -66,4 +66,79 @@ public function testRenderBulmaForm(): void
6666 ];
6767 $ this ->assertEquals (implode ("\n" , $ lines ), $ form ->toString (true , false ));
6868 }
69+
70+ public function testValidateForm (): void
71+ {
72+ E::$ style = 'bulma ' ;
73+ $ form = E::form ([
74+ E::field (E::text ('username ' ), E::label ('Username ' ), [V::required ('Username is required ' )]),
75+ E::field (E::password ('password ' ), E::label ('Password ' )),
76+ E::field (E::submit ('Login ' )),
77+ ]);
78+ $ form ->fill (['username ' => '' , 'password ' => '' ]);
79+ $ form ->validate ();
80+ $ lines = [
81+ '<form method="post"> ' ,
82+ ' <div class="field"> ' ,
83+ ' <label class="label" for="username">Username</label> ' ,
84+ ' <div class="control"> ' ,
85+ ' <input id="username" class="input is-danger" type="text" name="username" value=""/> ' ,
86+ ' </div> ' ,
87+ ' <p class="help is-danger">Username is required</p> ' ,
88+ ' </div> ' ,
89+ ' <div class="field"> ' ,
90+ ' <label class="label" for="password">Password</label> ' ,
91+ ' <div class="control"> ' ,
92+ ' <input id="password" class="input" type="password" name="password" value=""/> ' ,
93+ ' </div> ' ,
94+ ' </div> ' ,
95+ ' <div class="field"> ' ,
96+ ' <div class="control"> ' ,
97+ ' <input class="button is-primary" type="submit" value="Login"/> ' ,
98+ ' </div> ' ,
99+ ' </div> ' ,
100+ '</form> ' ,
101+ ];
102+ $ this ->assertEquals (implode ("\n" , $ lines ), $ form ->toString (true , false ));
103+ }
104+
105+ public function testAddErrorsForm (): void
106+ {
107+ E::$ style = 'bulma ' ;
108+ $ form = E::form ([
109+ E::field (E::text ('username ' ), E::label ('Username ' ), [V::required ('Username is required ' )]),
110+ E::field (E::password ('password ' ), E::label ('Password ' )),
111+ E::field (E::submit ('Login ' )),
112+ ]);
113+ $ form ->fill (['username ' => 'test ' , 'password ' => 'test ' ]);
114+ $ form ->validate ();
115+ $ form ->addErrors ([
116+ 'username ' => 'Invalid username/password combination ' ,
117+ 'password ' => 'Invalid username/password combination ' ,
118+ ]);
119+ $ lines = [
120+ '<form method="post"> ' ,
121+ ' <div class="field"> ' ,
122+ ' <label class="label" for="username">Username</label> ' ,
123+ ' <div class="control"> ' ,
124+ ' <input id="username" class="input is-danger" type="text" name="username" value="test"/> ' ,
125+ ' </div> ' ,
126+ ' <p class="help is-danger">Invalid username/password combination</p> ' ,
127+ ' </div> ' ,
128+ ' <div class="field"> ' ,
129+ ' <label class="label" for="password">Password</label> ' ,
130+ ' <div class="control"> ' ,
131+ ' <input id="password" class="input is-danger" type="password" name="password" value="test"/> ' ,
132+ ' </div> ' ,
133+ ' <p class="help is-danger">Invalid username/password combination</p> ' ,
134+ ' </div> ' ,
135+ ' <div class="field"> ' ,
136+ ' <div class="control"> ' ,
137+ ' <input class="button is-primary" type="submit" value="Login"/> ' ,
138+ ' </div> ' ,
139+ ' </div> ' ,
140+ '</form> ' ,
141+ ];
142+ $ this ->assertEquals (implode ("\n" , $ lines ), $ form ->toString (true , false ));
143+ }
69144}
0 commit comments