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