1 |
fmichon |
9227 |
<?php |
2 |
|
|
/** |
3 |
|
|
* Ce script contient la définition de la classe 'GeneralCommon'. |
4 |
|
|
* |
5 |
|
|
* @package openads |
6 |
|
|
* @version SVN : $Id$ |
7 |
|
|
*/ |
8 |
|
|
|
9 |
|
|
/** |
10 |
|
|
* Cette classe permet de tester unitairement les fonctions de l'application. |
11 |
|
|
*/ |
12 |
|
|
abstract class GeneralCommon extends PHPUnit\Framework\TestCase { |
13 |
|
|
|
14 |
|
|
/** |
15 |
|
|
* Méthode lancée en début de traitement |
16 |
|
|
*/ |
17 |
|
|
public function common_setUp() { |
18 |
|
|
date_default_timezone_set('Europe/Paris'); |
19 |
|
|
echo ' = '.get_called_class().'.'.str_replace('test_', '', $this->getName())."\r\n"; |
20 |
|
|
} |
21 |
|
|
|
22 |
|
|
/** |
23 |
|
|
* Méthode lancée en fin de traitement |
24 |
|
|
*/ |
25 |
|
|
public function common_tearDown() { |
26 |
|
|
} |
27 |
|
|
|
28 |
|
|
/** |
29 |
|
|
* Méthode étant appelée lors du fail d'un test. |
30 |
|
|
* |
31 |
|
|
* @param $e Exception remontée lors du test |
32 |
|
|
* @return void |
33 |
|
|
*/ |
34 |
|
|
public function common_onNotSuccessfulTest(Throwable $e) { |
35 |
|
|
echo 'Line '.$e->getLine().' : '.$e->getMessage()."\r\n"; |
36 |
|
|
parent::onNotSuccessfulTest($e); |
37 |
|
|
} |
38 |
|
|
|
39 |
|
|
/** |
40 |
|
|
* Test la fonction mois_date() de la classe Utils. |
41 |
|
|
*/ |
42 |
|
|
public function test_01_utils_mois_date() { |
43 |
|
|
// Instance de la classe Utils |
44 |
|
|
require_once "../obj/utils.class.php"; |
45 |
|
|
@session_start(); |
46 |
|
|
$_SESSION['collectivite'] = 1; |
47 |
|
|
$_SESSION['login'] = "admin"; |
48 |
|
|
$_SERVER['REQUEST_URI'] = ""; |
49 |
|
|
$f = new utils("nohtml"); |
50 |
|
|
$f->disableLog(); |
51 |
|
|
|
52 |
|
|
// Avec des mois |
53 |
|
|
|
54 |
|
|
// Pour les additions |
55 |
|
|
// Initialisation des tableaux |
56 |
|
|
$tab_date_dep = array(); |
57 |
|
|
$tab_delay = array(); |
58 |
|
|
$tab_date_fin = array(); |
59 |
|
|
|
60 |
|
|
// Tableau des date de départ |
61 |
|
|
$tab_date_dep = array( |
62 |
|
|
0 => "2013-12-31", |
63 |
|
|
1 => "2014-01-31", |
64 |
|
|
2 => "2014-01-01", |
65 |
|
|
3 => "2014-01-31", |
66 |
|
|
4 => "2015-12-31", |
67 |
|
|
5 => "", |
68 |
|
|
6 => "", |
69 |
|
|
7 => "", |
70 |
|
|
8 => "2015-12-31", |
71 |
|
|
9 => "2015-12-31", |
72 |
|
|
10 => "openADS", |
73 |
|
|
11 => "openADS", |
74 |
|
|
12 => "openADS", |
75 |
|
|
); |
76 |
|
|
// Tableau des delais |
77 |
|
|
$tab_delay = array( |
78 |
|
|
0 => "2", |
79 |
|
|
1 => "5", |
80 |
|
|
2 => "12", |
81 |
|
|
3 => "27", |
82 |
|
|
4 => "2", |
83 |
|
|
5 => "2", |
84 |
|
|
6 => "openads", |
85 |
|
|
7 => "", |
86 |
|
|
8 => "openADS", |
87 |
|
|
9 => "", |
88 |
|
|
10 => "2", |
89 |
|
|
11 => "openads", |
90 |
|
|
12 => "", |
91 |
|
|
); |
92 |
|
|
// Tableau des date résultat |
93 |
|
|
$tab_date_fin = array( |
94 |
|
|
0 => "2014-02-28", |
95 |
|
|
1 => "2014-06-30", |
96 |
|
|
2 => "2015-01-01", |
97 |
|
|
3 => "2016-04-30", |
98 |
|
|
4 => "2016-02-29", |
99 |
|
|
5 => null, |
100 |
|
|
6 => null, |
101 |
|
|
7 => null, |
102 |
|
|
8 => "2015-12-31", |
103 |
|
|
9 => "2015-12-31", |
104 |
|
|
10 => null, |
105 |
|
|
11 => null, |
106 |
|
|
12 => null, |
107 |
|
|
); |
108 |
|
|
|
109 |
|
|
// Pour chaque date |
110 |
|
|
foreach ($tab_date_dep as $key => $date_dep) { |
111 |
|
|
// Calcul la date résultat |
112 |
|
|
$date_fin = $f->mois_date($date_dep, $tab_delay[$key], "+"); |
113 |
|
|
// Vérifie que la date résultat est correct |
114 |
|
|
$this->assertEquals($date_fin, $tab_date_fin[$key]); |
115 |
|
|
} |
116 |
|
|
|
117 |
|
|
// Pour les soustractions |
118 |
|
|
// Initialisation des tableaux |
119 |
|
|
$tab_date_dep = array(); |
120 |
|
|
$tab_delay = array(); |
121 |
|
|
$tab_date_fin = array(); |
122 |
|
|
|
123 |
|
|
// Tableau des date de départ |
124 |
|
|
$tab_date_dep = array( |
125 |
|
|
0 => "2014-01-31", |
126 |
|
|
); |
127 |
|
|
// Tableau des delais |
128 |
|
|
$tab_delay = array( |
129 |
|
|
0 => "4", |
130 |
|
|
); |
131 |
|
|
// Tableau des date résultat |
132 |
|
|
$tab_date_fin = array( |
133 |
|
|
0 => "2013-09-30", |
134 |
|
|
); |
135 |
|
|
|
136 |
|
|
// Pour chaque date |
137 |
|
|
foreach ($tab_date_dep as $key => $date_dep) { |
138 |
|
|
// Calcul la date résultat |
139 |
|
|
$date_fin = $f->mois_date($date_dep, $tab_delay[$key], "-"); |
140 |
|
|
// Vérifie que la date résultat est correct |
141 |
|
|
$this->assertEquals($date_fin, $tab_date_fin[$key]); |
142 |
|
|
} |
143 |
|
|
|
144 |
|
|
// Avec des jours |
145 |
|
|
|
146 |
|
|
// Pour les additions |
147 |
|
|
// Initialisation des tableaux |
148 |
|
|
$tab_date_dep = array(); |
149 |
|
|
$tab_delay = array(); |
150 |
|
|
$tab_date_fin = array(); |
151 |
|
|
|
152 |
|
|
// Tableau des date de départ |
153 |
|
|
$tab_date_dep = array( |
154 |
|
|
0 => "2013-12-31", |
155 |
|
|
1 => "2014-01-31", |
156 |
|
|
2 => "2014-01-01", |
157 |
|
|
3 => "2014-01-31", |
158 |
|
|
4 => "2015-12-31", |
159 |
|
|
5 => "", |
160 |
|
|
6 => "", |
161 |
|
|
7 => "", |
162 |
|
|
8 => "2015-12-31", |
163 |
|
|
9 => "2015-12-31", |
164 |
|
|
10 => "openADS", |
165 |
|
|
11 => "openADS", |
166 |
|
|
12 => "openADS", |
167 |
|
|
); |
168 |
|
|
// Tableau des delais |
169 |
|
|
$tab_delay = array( |
170 |
|
|
0 => "2", |
171 |
|
|
1 => "5", |
172 |
|
|
2 => "12", |
173 |
|
|
3 => "27", |
174 |
|
|
4 => "2", |
175 |
|
|
5 => "2", |
176 |
|
|
6 => "openads", |
177 |
|
|
7 => "", |
178 |
|
|
8 => "openADS", |
179 |
|
|
9 => "", |
180 |
|
|
10 => "2", |
181 |
|
|
11 => "openads", |
182 |
|
|
12 => "", |
183 |
|
|
); |
184 |
|
|
// Tableau des dates résultats |
185 |
|
|
$tab_date_fin = array( |
186 |
|
|
0 => "2014-01-02", |
187 |
|
|
1 => "2014-02-05", |
188 |
|
|
2 => "2014-01-13", |
189 |
|
|
3 => "2014-02-27", |
190 |
|
|
4 => "2016-01-02", |
191 |
|
|
5 => null, |
192 |
|
|
6 => null, |
193 |
|
|
7 => null, |
194 |
|
|
8 => "2015-12-31", |
195 |
|
|
9 => "2015-12-31", |
196 |
|
|
10 => null, |
197 |
|
|
11 => null, |
198 |
|
|
12 => null, |
199 |
|
|
); |
200 |
|
|
|
201 |
|
|
// Pour chaque date |
202 |
|
|
foreach ($tab_date_dep as $key => $date_dep) { |
203 |
|
|
// Calcul la date résultat |
204 |
|
|
$date_fin = $f->mois_date($date_dep, $tab_delay[$key], "+", "jour"); |
205 |
|
|
// Vérifie que la date résultat est correct |
206 |
|
|
$this->assertEquals($date_fin, $tab_date_fin[$key]); |
207 |
|
|
} |
208 |
|
|
|
209 |
|
|
// Pour les soustractions |
210 |
|
|
// Initialisation des tableaux |
211 |
|
|
$tab_date_dep = array(); |
212 |
|
|
$tab_delay = array(); |
213 |
|
|
$tab_date_fin = array(); |
214 |
|
|
|
215 |
|
|
// Tableau des date de départ |
216 |
|
|
$tab_date_dep = array( |
217 |
|
|
0 => "2014-01-31", |
218 |
|
|
); |
219 |
|
|
// Tableau des delais |
220 |
|
|
$tab_delay = array( |
221 |
|
|
0 => "4", |
222 |
|
|
); |
223 |
|
|
// Tableau des date résultat |
224 |
|
|
$tab_date_fin = array( |
225 |
|
|
0 => "2014-01-27", |
226 |
|
|
); |
227 |
|
|
|
228 |
|
|
// Pour chaque date |
229 |
|
|
foreach ($tab_date_dep as $key => $date_dep) { |
230 |
|
|
// Calcul la date résultat |
231 |
|
|
$date_fin = $f->mois_date($date_dep, $tab_delay[$key], "-", "jour"); |
232 |
|
|
// Vérifie que la date résultat est correct |
233 |
|
|
$this->assertEquals($date_fin, $tab_date_fin[$key]); |
234 |
|
|
} |
235 |
|
|
|
236 |
|
|
// Destruction de la classe Utils |
237 |
|
|
$f->__destruct(); |
238 |
|
|
} |
239 |
|
|
|
240 |
|
|
|
241 |
|
|
/** |
242 |
|
|
* Vérification de la méthode permettant de selectionner le logo de la bonne |
243 |
|
|
* collectivité. |
244 |
|
|
*/ |
245 |
|
|
function test_02_TNR_selection_du_logo_dans_les_editions() { |
246 |
|
|
// Instance de la classe Utils |
247 |
|
|
require_once "../obj/utils.class.php"; |
248 |
|
|
@session_start(); |
249 |
|
|
$_SESSION['collectivite'] = 1; |
250 |
|
|
$_SESSION['login'] = "admin"; |
251 |
|
|
$_SERVER['REQUEST_URI'] = ""; |
252 |
|
|
$f = new utils("nohtml"); |
253 |
|
|
$GLOBALS['f'] = $f; |
254 |
|
|
$f->disableLog(); |
255 |
|
|
|
256 |
|
|
$edition = $f->get_inst__om_edition(); |
257 |
|
|
// Vérification du logo de collectivité mono dans le cas où : |
258 |
|
|
// - un logo multi actif est défini |
259 |
|
|
// - un logo actif pour la collectivité est défini |
260 |
|
|
$logo = $edition->get_logo_from_collectivite("logopdf.png", 2); |
261 |
|
|
// XXX le double // dans le path est nécessaire |
262 |
|
|
$logo_valid = array( |
263 |
|
|
"file" => "../var/filestorage//88/8815/88154c6f68d3a0e1928c84fc0187993d", |
264 |
|
|
"w" => 43.349333333333334, |
265 |
|
|
"h" => 43.349333333333334, |
266 |
|
|
"type" => "png", |
267 |
|
|
); |
268 |
|
|
// Le logo commune doit être retourné par la méthode |
269 |
|
|
$this->assertEquals($logo, $logo_valid); |
270 |
|
|
|
271 |
|
|
// Désactivation du logo de la commune |
272 |
|
|
$val_logo["actif"] = 'f'; |
273 |
|
|
$f->db->autoExecute(DB_PREFIXE."om_logo", $val_logo, DB_AUTOQUERY_UPDATE, "om_logo=2"); |
274 |
|
|
|
275 |
|
|
// Vérification du logo de collectivité mono dans le cas où : |
276 |
|
|
// - un logo multi actif est défini |
277 |
|
|
// - un logo la collectivité est inactif |
278 |
|
|
$logo = $edition->get_logo_from_collectivite("logopdf.png", 1); |
279 |
|
|
// XXX le double // dans le path est nécessaire |
280 |
|
|
$logo_valid = array( |
281 |
|
|
"file" => "../var/filestorage//d2/d20a/d20a5c36d3b83464bab63035a7f61901", |
282 |
|
|
"w" => 43.349333333333334, |
283 |
|
|
"h" => 43.349333333333334, |
284 |
|
|
"type" => "png", |
285 |
|
|
); |
286 |
|
|
// Le logo de la collectivité multi doit être retourné |
287 |
|
|
$this->assertEquals($logo, $logo_valid); |
288 |
|
|
|
289 |
|
|
// Désactivation du logo de la commune |
290 |
|
|
$val_logo["actif"] = 'f'; |
291 |
|
|
$f->db->autoExecute(DB_PREFIXE."om_logo", $val_logo, DB_AUTOQUERY_UPDATE, "om_logo=6"); |
292 |
|
|
|
293 |
|
|
// Vérification du logo de collectivité mono dans le cas où aucun logo |
294 |
|
|
// n'est activé |
295 |
|
|
$logo = $edition->get_logo_from_collectivite("logopdf.png", 1); |
296 |
|
|
$logo_valid = null; |
297 |
|
|
// Un valeur null doit être retournée |
298 |
|
|
$this->assertEquals($logo, $logo_valid); |
299 |
|
|
// Destruction de la classe Utils |
300 |
|
|
$f->__destruct(); |
301 |
|
|
} |
302 |
|
|
|
303 |
|
|
/** |
304 |
|
|
* Vérification de la méthode permettant de formater le corps du courriel |
305 |
|
|
* notifié aux communes. |
306 |
|
|
*/ |
307 |
|
|
function test_03_instruction_formater_modele() { |
308 |
|
|
// Instance de la classe Utils |
309 |
|
|
require_once "../obj/utils.class.php"; |
310 |
|
|
@session_start(); |
311 |
|
|
$_SESSION['collectivite'] = 1; |
312 |
|
|
$_SESSION['login'] = "admin"; |
313 |
|
|
$_SERVER['REQUEST_URI'] = ""; |
314 |
|
|
$f = new utils("nohtml"); |
315 |
|
|
$f->disableLog(); |
316 |
|
|
$GLOBALS["f"] = $f; |
317 |
|
|
// template du modèle |
318 |
|
|
$template = 'DI : <DOSSIER_INSTRUCTION> |
319 |
|
|
LIEN : <URL_INSTRUCTION> |
320 |
|
|
INSTRUCTION : <ID_INSTRUCTION>'; |
321 |
|
|
// résultat attendu |
322 |
|
|
$di = 'PC01'; |
323 |
|
|
$inst = 7; |
324 |
|
|
$url = 'http://localhost/openads/app/index.php?module=form&direct_link=true&obj=dossier_instruction&action=3'; |
325 |
|
|
$url .= '&direct_field=dossier&direct_form=instruction&direct_action=3&direct_idx='.$inst; |
326 |
|
|
$link = '<a href="'.$url.'">'.$url.'</a>'; |
327 |
|
|
$expected = 'DI : '.$di.'<br/>'; |
328 |
|
|
$expected .= 'LIEN : '.$link.'<br/>'; |
329 |
|
|
$expected .= 'INSTRUCTION : '.$inst; |
330 |
|
|
// Instance de la classe instruction |
331 |
|
|
$instr = $f->get_inst__om_dbform(array( |
332 |
|
|
"obj" => "instruction", |
333 |
|
|
"idx" => "]", |
334 |
|
|
)); |
335 |
|
|
// Traitement |
336 |
|
|
$result = $instr->formater_modele($template, $di, $inst); |
337 |
|
|
// Vérification du traitement |
338 |
|
|
$this->assertEquals($expected, $result); |
339 |
|
|
// Destruction de la classe Utils |
340 |
|
|
$f->__destruct(); |
341 |
|
|
} |
342 |
|
|
|
343 |
|
|
|
344 |
|
|
/** |
345 |
|
|
* TNR du bug de champs de fusion [*_correspondant] dans la om_requete n°7 "dossier". |
346 |
|
|
* Le test vérifie qu'une seule ligne est retournée par la requête et qu'elle contient |
347 |
|
|
* bien le nom du pétitionnaire principal |
348 |
|
|
*/ |
349 |
|
|
function test_05_TNR_om_requete_dossier() { |
350 |
|
|
// Instance de la classe Utils |
351 |
|
|
require_once "../obj/utils.class.php"; |
352 |
|
|
@session_start(); |
353 |
|
|
$_SESSION['collectivite'] = 1; |
354 |
|
|
$_SESSION['login'] = "admin"; |
355 |
|
|
$_SERVER['REQUEST_URI'] = ""; |
356 |
|
|
$f = new utils("nohtml"); |
357 |
|
|
$f->disableLog(); |
358 |
|
|
$GLOBALS["f"] = $f; |
359 |
|
|
|
360 |
|
|
$om_requete = $f->get_inst__om_dbform(array( |
361 |
|
|
"obj" => "om_requete", |
362 |
|
|
"idx" => 7, |
363 |
|
|
)); |
364 |
|
|
|
365 |
|
|
// récupération de la requête SQL |
366 |
|
|
$sql = $om_requete->getVal('requete'); |
367 |
|
|
// remplacement des &idx par la valeur du dossier |
368 |
|
|
$sql = str_replace('&idx', "AT0130551300001P0", $sql); |
369 |
|
|
// définition du schéma |
370 |
|
|
$sql = str_replace('&DB_PREFIXE', DB_PREFIXE, $sql); |
371 |
|
|
// exécution de la requête |
372 |
|
|
$res = $f->db->query($sql); |
373 |
|
|
$f->isDatabaseError($res); |
374 |
|
|
$count = $res->numRows(); |
375 |
|
|
// La om_requete doit retourner une seule ligne |
376 |
|
|
$this->assertEquals(1, $count); |
377 |
|
|
// récupération du résultat de la om_requete |
378 |
|
|
$values = &$res->fetchRow(DB_FETCHMODE_ASSOC); |
379 |
|
|
// La valeur de la colonne nom_correspondant doit être le nom du pétitionnaire |
380 |
|
|
// principal |
381 |
|
|
$this->assertEquals("Dupont Jean", $values['nom_correspondant']); |
382 |
|
|
// Destruction de la classe Utils |
383 |
|
|
$f->__destruct(); |
384 |
|
|
} |
385 |
|
|
|
386 |
|
|
/** |
387 |
|
|
* TNR de la methode factorisé de création de dossier_message |
388 |
|
|
*/ |
389 |
|
|
function test_06_TNR_dossier_message() { |
390 |
|
|
// Instanciation de tout les requis |
391 |
|
|
require_once "../obj/utils.class.php"; |
392 |
|
|
@session_start(); |
393 |
|
|
$_SESSION['collectivite'] = 2; |
394 |
|
|
$_SESSION['login'] = "admin"; |
395 |
|
|
$_SERVER['REQUEST_URI'] = ""; |
396 |
|
|
$f = new utils("nohtml"); |
397 |
|
|
$f->disableLog(); |
398 |
|
|
$GLOBALS["f"] = $f; |
399 |
|
|
$dossier_message_factory = $f->get_inst__om_dbform(array( |
400 |
|
|
"obj" => "dossier_message", |
401 |
|
|
"idx" => 0, |
402 |
|
|
)); |
403 |
|
|
$dossier_message_val = array(); |
404 |
|
|
|
405 |
|
|
$dossier_message_val['contenu'] = 'Test Success'; |
406 |
|
|
$dossier_message_val['dossier'] = 'AT0130551200001P0'; |
407 |
|
|
$dossier_message_val['type'] = _('Ajout de pièce(s)'); |
408 |
|
|
$dossier_message_val['emetteur'] = 'instr'; |
409 |
|
|
$dossier_message_val['login'] = 'instr'; |
410 |
|
|
$dossier_message_val['date_emission'] = date('Y-m-d H:i:s'); |
411 |
|
|
$add = $dossier_message_factory->add_notification_message($dossier_message_val); |
412 |
|
|
$this->assertEquals(true, $add); |
413 |
|
|
$this->assertEquals(true, isset($dossier_message_factory->valF[$dossier_message_factory->clePrimaire])); |
414 |
|
|
$dossier_message = $f->get_inst__om_dbform(array( |
415 |
|
|
"obj" => "dossier_message", |
416 |
|
|
"idx" => $dossier_message_factory->valF[$dossier_message_factory->clePrimaire], |
417 |
|
|
)); |
418 |
|
|
$this->assertEquals($dossier_message_val['dossier'], $dossier_message->getVal('dossier')); |
419 |
|
|
$this->assertEquals('t', $dossier_message->getVal('lu')); |
420 |
|
|
|
421 |
|
|
$dossier_message_val['contenu'] = 'Test Duplicata'; |
422 |
|
|
$add = $dossier_message_factory->add_notification_message($dossier_message_val); |
423 |
|
|
$this->assertEquals(true, $add); |
424 |
|
|
|
425 |
|
|
$dossier_message_val['contenu'] = 'Test nouveau type même dossier'; |
426 |
|
|
$dossier_message_val['type'] = _('Autorisation contestée'); |
427 |
|
|
$add = $dossier_message_factory->add_notification_message($dossier_message_val); |
428 |
|
|
$this->assertEquals(true, $add); |
429 |
|
|
|
430 |
|
|
$dossier_message_val['contenu'] = 'Test message non lu'; |
431 |
|
|
$dossier_message_val['dossier'] = 'AZ0130551200001P0'; |
432 |
|
|
$dossier_message_val['emetteur'] = $f->get_connected_user_login_name(); |
433 |
|
|
$dossier_message_val['login'] = $_SESSION['login']; |
434 |
|
|
$add = $dossier_message_factory->add_notification_message($dossier_message_val); |
435 |
|
|
$this->assertEquals(true, $add); |
436 |
|
|
$dossier_message = $f->get_inst__om_dbform(array( |
437 |
|
|
"obj" => "dossier_message", |
438 |
|
|
"idx" => $dossier_message_factory->valF[$dossier_message_factory->clePrimaire], |
439 |
|
|
)); |
440 |
|
|
$this->assertEquals('f', $dossier_message->getVal('lu')); |
441 |
|
|
|
442 |
|
|
// Destruction de la classe Utils |
443 |
|
|
$f->__destruct(); |
444 |
|
|
} |
445 |
|
|
} |