/[openfoncier]/trunk/tests/testGeneral_common.php
ViewVC logotype

Annotation of /trunk/tests/testGeneral_common.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 9227 - (hide annotations)
Fri Mar 27 14:02:58 2020 UTC (4 years, 10 months ago) by fmichon
Original Path: branches/4.13.0-develop/tests/testGeneral_common.php
File size: 15288 byte(s)
* Tests : Compatibilité phpunit 7 et phpunit 8 et réorganisation des tests phpunit pour support à la fois des versions PHP7.0 & PHP7.1+.

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     }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26