Commit d1073d2540c10215cf87d64397271bb2612c992f
1 parent
8fe06187
Exists in
master
and in
1 other branch
Bugfixes et renforcement des tests (v3.7.9.64)
(date reception doit maintenant etre >= date achat, et test sur message flash était insuffisant et laissait passer des cas...)
Showing
4 changed files
with
56 additions
and
21 deletions
Show diff stats
CHANGES.txt
... | ... | @@ -26,6 +26,11 @@ TODO: - Nouvelle page web "Statistiques mensuelles" (/pages/stats) |
26 | 26 | |
27 | 27 | - Mode "nolimit" pour le profil "superadmin" activable depuis la page de configuration (/configurations/view) : permet de donner (temporairement) plus de droits au super administrateur ("Superadmin a tous les droits", depuis menu Tools) |
28 | 28 | |
29 | +- Numéro inventaire désormais régénéré si on change la date d'achat (l'année est mise à jour) | |
30 | + | |
31 | +- Renforcement des contrôles sur les dates pour éviter des incohérences (date achat, livraison, fin garantie...) | |
32 | + | |
33 | + | |
29 | 34 | |
30 | 35 | ------- |
31 | 36 | 06/07/2020 NEWS#1 : |
... | ... | @@ -65,9 +70,10 @@ Outre ces changements, voici d'autres changements importants : |
65 | 70 | ======= CHANGES ======= |
66 | 71 | |
67 | 72 | ------- |
68 | -17/07/2020 v3.7.9.63 (EP) | |
73 | +17/07/2020 v3.7.9.63-64 (EP) | |
69 | 74 | - (i) Renforcement important des controles sur les dates d'un matériel (achat, livraison, fin garantie) |
70 | 75 | - (i) Le numero d'inventaire généré automatiquement en fonction de l'année d'achat est désormais MIS À JOUR à chaque fois qu'on change la date d'achat !!! |
76 | + - (b) bugfixes et renforcement des tests (date reception doit maintenant etre >= date achat, et test sur message flash était insuffisant et laissait passer des cas...) | |
71 | 77 | |
72 | 78 | |
73 | 79 | ------- | ... | ... |
README.md
... | ... | @@ -43,7 +43,7 @@ Logiciel testé et validé sur les configurations suivantes : |
43 | 43 | -------------------------------------------------------------------------------------------- |
44 | 44 | |
45 | 45 | Date: 17/07/2020 |
46 | -Version: 3.7.9.63 | |
46 | +Version: 3.7.9.64 | |
47 | 47 | |
48 | 48 | |
49 | 49 | HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) | ... | ... |
src/Model/Table/MaterielsTable.php
... | ... | @@ -188,13 +188,10 @@ class MaterielsTable extends AppTable |
188 | 188 | */ |
189 | 189 | /* |
190 | 190 | debug($entity); // ex: '20/04/2020' |
191 | - debug($today); | |
192 | - debug($date); | |
193 | - exit; | |
194 | - */ | |
195 | 191 | debug($today); // '20200717' |
196 | 192 | debug($date); // '20200718' => pas bon |
197 | 193 | debug($date_too_old); |
194 | + */ | |
198 | 195 | //return ($today >= $date); |
199 | 196 | return ($date<=$today && $date>$date_too_old); |
200 | 197 | }; |
... | ... | @@ -248,7 +245,7 @@ class MaterielsTable extends AppTable |
248 | 245 | $validator |
249 | 246 | ->allowEmptyString($f, $configuration->date_commande_facultative, 'Ce champ doit être rempli') |
250 | 247 | ->date($f, 'dmy', 'Date invalide') // https://api.cakephp.org/3.8/class-Cake.Validation.Validation.html#_date |
251 | - ->add($f, 'valide', [ | |
248 | + ->add($f, 'valide0', [ | |
252 | 249 | // 2 façons d'appeler une règle de validation locale : |
253 | 250 | // - par son nom de fonction définie LOCALEMENT (ici dans CETTE fonction) comme une variable (avec un $) |
254 | 251 | //'rule' => $dateIsValid, |
... | ... | @@ -268,7 +265,7 @@ class MaterielsTable extends AppTable |
268 | 265 | ->allowEmptyString($f) |
269 | 266 | ->date($f, 'dmy', 'Date invalide') // https://api.cakephp.org/3.8/class-Cake.Validation.Validation.html#_date |
270 | 267 | //->add('date_reception', 'valid', ['rule' => 'date', 'message' => 'Date invalide']); |
271 | - ->add($f, 'valide-JJslashMMslashAAAA', [ | |
268 | + ->add($f, 'valide1', [ | |
272 | 269 | 'rule' => 'dateIsValid', |
273 | 270 | 'message' => "La date n'est pas valide (JJ/MM/AAAA)", |
274 | 271 | 'provider' => 'table', |
... | ... | @@ -279,7 +276,7 @@ class MaterielsTable extends AppTable |
279 | 276 | $validator |
280 | 277 | ->allowEmptyString($f) |
281 | 278 | ->date($f, 'dmy', 'Date invalide') // https://api.cakephp.org/3.8/class-Cake.Validation.Validation.html#_date |
282 | - ->add($f, 'valide-JJslashMMslashAAAA', [ | |
279 | + ->add($f, 'valide2', [ | |
283 | 280 | 'rule' => 'dateIsValid', |
284 | 281 | 'message' => "La date n'est pas valide (JJ/MM/AAAA)", |
285 | 282 | 'provider' => 'table', | ... | ... |
tests/TestCase/Controller/MaterielsControllerTest.php
... | ... | @@ -124,7 +124,8 @@ class MaterielsControllerTest extends General { |
124 | 124 | // Ca marche pas dans le sens US yyyy-mm-dd alors que ça marche dans la fixture, WHY ??? |
125 | 125 | //'date_acquisition' => yyyy1.'-04-19', //+4 |
126 | 126 | // Donc format FR dd-mm-yyyy |
127 | - 'date_acquisition' => '19-04-'.yyyy1, | |
127 | + //'date_acquisition' => '19-04-'.yyyy1, | |
128 | + 'date_acquisition' => '19/04/'.yyyy1, | |
128 | 129 | // pas obligatoire, mais plus cohérent car c'est le statut minimum |
129 | 130 | ////'status' => 'CREATED', |
130 | 131 | /* |
... | ... | @@ -769,6 +770,7 @@ class MaterielsControllerTest extends General { |
769 | 770 | //debug("bef $nbmat"); |
770 | 771 | |
771 | 772 | // ADD |
773 | + //debug($materiel); | |
772 | 774 | //$this->post('/materiels/add', $this->newMaterielWithAllMandatoryFields); |
773 | 775 | $this->post('/materiels/add', $materiel); |
774 | 776 | $nbmat++; |
... | ... | @@ -908,7 +910,8 @@ class MaterielsControllerTest extends General { |
908 | 910 | //'materiel_technique' => 1, |
909 | 911 | //'status' => 'CREATED', |
910 | 912 | //'date_acquisition' => '19-04-2016', |
911 | - 'date_acquisition' => '19-04-'.yyyy0, | |
913 | + 'date_acquisition' => '19/04/'.yyyy0, | |
914 | + 'date_reception' => '', // sinon, il FAUT qu'elle soit >= date achat | |
912 | 915 | //'nom_createur' => 'Pallier Etienne', |
913 | 916 | //'nom_modificateur' => 'Jean Administration', |
914 | 917 | //'nom_responsable' => 'Jacques Utilisateur', |
... | ... | @@ -1045,7 +1048,10 @@ class MaterielsControllerTest extends General { |
1045 | 1048 | 'materiel_administratif' => 0, |
1046 | 1049 | //'materiel_technique' => 1, |
1047 | 1050 | //'status' => 'CREATED', |
1048 | - 'date_acquisition' => '19-04-2016', | |
1051 | + //'date_acquisition' => '19-04-2016', | |
1052 | + //'date_acquisition' => '19/04/2016', | |
1053 | + 'date_acquisition' => '19/04/'.yyyy0, | |
1054 | + 'date_reception' => '', // sinon FAUT qu'elle soit >= date_acquisition | |
1049 | 1055 | 'nom_createur' => 'Pallier Etienne', |
1050 | 1056 | 'nom_modificateur' => 'Jean Administration', |
1051 | 1057 | 'nom_responsable' => 'Jacques Utilisateur', |
... | ... | @@ -1055,7 +1061,15 @@ class MaterielsControllerTest extends General { |
1055 | 1061 | $this->post('/materiels/edit/2', $data); |
1056 | 1062 | $this->get('/materiels/index'); |
1057 | 1063 | $this->assertResponseContains("Matos Test 2 CREATED modified", "Le matériel CREATED édité n'a pas pu etre enregistré"); |
1058 | - | |
1064 | + | |
1065 | + // Le numero d'inventaire doit avoir été mis à jour avec la nouvelle année de la date d'achat | |
1066 | + $new_num_inventaire = 'TEST-'.yyyy0.'-0001'; | |
1067 | + $this->assertResponseContains($new_num_inventaire, "Le matériel CREATED édité n'a pas pu etre enregistré"); | |
1068 | + $m = $this->Materiels->get(2); | |
1069 | + assertEquals($m->numero_laboratoire, $new_num_inventaire); | |
1070 | + | |
1071 | + | |
1072 | + | |
1059 | 1073 | // 2) Passe le status à VALIDATED |
1060 | 1074 | $data = [ |
1061 | 1075 | 'designation' => 'Matos Test 2 VALIDATED', |
... | ... | @@ -1989,7 +2003,10 @@ class MaterielsControllerTest extends General { |
1989 | 2003 | 'materiel_administratif' => 0, |
1990 | 2004 | 'materiel_technique' => 1, |
1991 | 2005 | 'status' => 'CREATED', |
1992 | - 'date_acquisition' => '19-04-2016', | |
2006 | + //'date_acquisition' => '19-04-2016', | |
2007 | + //'date_acquisition' => '19/04/2016', | |
2008 | + 'date_acquisition' => '19/04/'.yyyy0, | |
2009 | + 'date_reception' => '', // sinon FAUT qu'elle soit >= date_acquisition | |
1993 | 2010 | 'nom_createur' => 'Pallier Etienne', |
1994 | 2011 | 'nom_modificateur' => 'Jean Administration', |
1995 | 2012 | 'nom_responsable' => 'Jacques Utilisateur', |
... | ... | @@ -2511,7 +2528,10 @@ class MaterielsControllerTest extends General { |
2511 | 2528 | |
2512 | 2529 | // (EP 20200629) |
2513 | 2530 | private function _assertFlashMessageIsAsExpectedForAction($action, $SUCCESS=true) { |
2514 | - $expected_flash_message = 'Le matériel a bien été '; | |
2531 | + // Par défaut, pas de message flash | |
2532 | + $expected_flash_message = []; | |
2533 | + if (in_array($action, ['add', 'edit', 'delete', 'statusCreated', 'statusValidated', 'statusTobearchived', 'statusArchived'])) | |
2534 | + $expected_flash_message = 'Le matériel a bien été '; | |
2515 | 2535 | switch($action) { |
2516 | 2536 | case 'add': |
2517 | 2537 | $expected_flash_message .= 'ajouté'; |
... | ... | @@ -2540,7 +2560,10 @@ class MaterielsControllerTest extends General { |
2540 | 2560 | case 'statusTobearchived': $expected_flash_message = "La sortie d'inventaire a bien été demandée"; break; |
2541 | 2561 | case 'statusArchived': $expected_flash_message .= "archivé (sorti de l'inventaire)"; break; |
2542 | 2562 | } |
2543 | - $flash_message = isset($_SESSION['Flash']) ? $_SESSION['Flash']['flash'][0]['message']:[]; | |
2563 | + //$flash_message = isset($_SESSION['Flash']) ? $_SESSION['Flash']['flash'][0]['message']:[]; | |
2564 | + //debug($_SESSION['Flash']); | |
2565 | + $flash_message = isset($_SESSION['Flash']['flash']) ? $_SESSION['Flash']['flash'][0]['message'] : []; | |
2566 | + if ($SUCCESS && $expected_flash_message) $this->assertTrue($flash_message != [], "Pas de message flash alors qu'il devrait y en avoir un !"); | |
2544 | 2567 | if ($flash_message) { |
2545 | 2568 | // Assert a flash message in the 'flash' key. |
2546 | 2569 | // Test message partiel |
... | ... | @@ -2658,6 +2681,8 @@ class MaterielsControllerTest extends General { |
2658 | 2681 | $this->_checkNbEntitiesInIndexViewIsAsExpected('Materiels', $nbentities); |
2659 | 2682 | // On récupère ce dernier matériel créé from BD |
2660 | 2683 | $m = $this->Materiels->find()->last(); |
2684 | + //debug($m); | |
2685 | + // id = 15 | |
2661 | 2686 | $id = $m->id; |
2662 | 2687 | // On vérifie que le statut du matos a bien changé |
2663 | 2688 | $this->_checkMaterielStatusChangedTo($id,$new_status); |
... | ... | @@ -2684,19 +2709,26 @@ class MaterielsControllerTest extends General { |
2684 | 2709 | // b) On ajoute les données manquantes |
2685 | 2710 | // CHAMPS NECESSAIRES POUR MATERIEL VALIDATED : |
2686 | 2711 | $new_data = [ |
2687 | - 'date_reception' => '2016-04-19', | |
2688 | - 'nom_responsable' => 'Lorem ipsum dolor sit amet', | |
2712 | + //'date_reception' => '2016-04-19', | |
2713 | + //'date_reception' => '19/04/2016', // FAIL car doit etre >= date achat !! | |
2714 | + 'date_reception' => '19/04/'.yyyy0, | |
2715 | + 'nom_responsable' => 'LoremEE ipsum dolor sit amet', | |
2689 | 2716 | 'fournisseur_id' => 1, |
2690 | 2717 | 'organisme_id' => 1, |
2691 | 2718 | 'prix_ht' => 75, |
2692 | 2719 | 'numero_commande' => 'Lorem ipsum dolor sit amet', |
2693 | 2720 | ]; |
2694 | 2721 | $action = 'edit'; |
2695 | - $this->_doActionAndCheckResult($action, $id, $SUCCESS=true, $new_data); | |
2696 | - | |
2722 | + //$this->_doActionAndCheckResult($action, $id, $SUCCESS=true, $new_data); | |
2723 | + $this->_doActionAndCheckResult($action, $id, true, $new_data); | |
2724 | + //$m = $this->Materiels->find()->last(); | |
2725 | + //$m = $this->Materiels->get($id); | |
2726 | + //debug($m); | |
2727 | + | |
2697 | 2728 | // c) SUCCESS car on a toutes les données nécessaires |
2698 | 2729 | $action = 'statusValidated'; |
2699 | - $this->_doActionAndCheckResult($action, $id, $SUCCESS=true); | |
2730 | + //$this->_doActionAndCheckResult($action, $id, $SUCCESS=true); | |
2731 | + $this->_doActionAndCheckResult($action, $id, true); | |
2700 | 2732 | // On vérifie que le statut du matos a bien changé |
2701 | 2733 | $this->_checkMaterielStatusChangedTo($id,$new_status); |
2702 | 2734 | ... | ... |