Commit 0ea75a7957b3adbf4b7345b870b7499af62a3fa4
1 parent
80b8cb03
Exists in
master
and in
1 other branch
bugfix et réécriture des actions documents /admission, /sortie, /fiche
(v3.7.9.51) => désormais, on passe l'id du matos associé et non pas son numero d'inventaire !!! (mauvais raccourci) => ca permet de tester les conditions d'accès de ces actions en fonction du matériel concerné !!
Showing
5 changed files
with
94 additions
and
40 deletions
Show diff stats
README.md
@@ -54,12 +54,12 @@ Logiciel testé et validé sur les configurations suivantes : | @@ -54,12 +54,12 @@ Logiciel testé et validé sur les configurations suivantes : | ||
54 | VERSION ACTUELLE | 54 | VERSION ACTUELLE |
55 | 55 | ||
56 | Date: 29/06/2020 | 56 | Date: 29/06/2020 |
57 | -Version: 3.7.9.50 | 57 | +Version: 3.7.9.51 |
58 | Author: EP | 58 | Author: EP |
59 | -Commentaire: | ||
60 | - - Nouveau (et dernier dernier) super test ajouté : test du cycle de vie complet d'un matériel (CREATED => ... => ARCHIVED) | ||
61 | - - bugfix (en cours) des actions documents/admission et documents/sortie qui ne marchent plus car on ne leur passe pas un id mais un nom de doc... | ||
62 | - - Nombreuses refactorisations dans les tests | 59 | +Commentaire: |
60 | + - bugfix et réécriture des actions documents/admission, sortie, fiche !!! (pas d'id) | ||
61 | + => désormais, on passe l'id du matos associé et non pas son numero d'inventaire !!! (mauvais raccourci) | ||
62 | + => ca permet de tester les conditions d'accès de ces actions en fonction du matériel concerné !! | ||
63 | 63 | ||
64 | - Amélioration page /pages/acls | 64 | - Amélioration page /pages/acls |
65 | 65 | ||
@@ -104,6 +104,11 @@ La liste ci-dessous est aussi en ligne ici : https://tinyurl.com/labinvent#headi | @@ -104,6 +104,11 @@ La liste ci-dessous est aussi en ligne ici : https://tinyurl.com/labinvent#headi | ||
104 | 104 | ||
105 | ----------------------------------------------------------------------------------------------------------- | 105 | ----------------------------------------------------------------------------------------------------------- |
106 | 106 | ||
107 | +29/06/2020 v3.7.9.50 (EP) | ||
108 | + - Nouveau (et dernier dernier) super test ajouté : test du cycle de vie complet d'un matériel (CREATED => ... => ARCHIVED) | ||
109 | + - bugfix (en cours) des actions documents/admission et documents/sortie qui ne marchent plus car on ne leur passe pas un id mais un nom de doc... | ||
110 | + - Nombreuses refactorisations dans les tests | ||
111 | + | ||
107 | 26/06/2020 v3.7.9.48-49 (EP) | 112 | 26/06/2020 v3.7.9.48-49 (EP) |
108 | - TEST3 : Ajout d'un 3ème (et DERNIER) gros test générique des vues index et view de Materiels (/materiels/index et /view) qui teste le CONTENU des vues pour TOUS les materiels de la BD de test (fixture), aussi bien dans la vue index globale que dans CHAQUE vue détaillée de chaque matériel (et surtout en vérifiant aussi la liste des entités associées (suivis,emprunts,documents). | 113 | - TEST3 : Ajout d'un 3ème (et DERNIER) gros test générique des vues index et view de Materiels (/materiels/index et /view) qui teste le CONTENU des vues pour TOUS les materiels de la BD de test (fixture), aussi bien dans la vue index globale que dans CHAQUE vue détaillée de chaque matériel (et surtout en vérifiant aussi la liste des entités associées (suivis,emprunts,documents). |
109 | - bugfix autorisations d'affichage des boutons d'action sur documents dans materiels/view/ | 114 | - bugfix autorisations d'affichage des boutons d'action sur documents dans materiels/view/ |
src/Controller/DocumentsController.php
@@ -58,9 +58,11 @@ class DocumentsController extends AppController | @@ -58,9 +58,11 @@ class DocumentsController extends AppController | ||
58 | $this->setAuthorizationsForAction('admission', ['VALIDATED',0], ['user'=>-1, 'resp'=>-1]); | 58 | $this->setAuthorizationsForAction('admission', ['VALIDATED',0], ['user'=>-1, 'resp'=>-1]); |
59 | // Action 'admissionPdf' | 59 | // Action 'admissionPdf' |
60 | $this->setAuthorizationsForAction('admissionPdf', 'admission', ['user'=>-1, 'resp'=>-1]); | 60 | $this->setAuthorizationsForAction('admissionPdf', 'admission', ['user'=>-1, 'resp'=>-1]); |
61 | + //$this->setAuthorizationsForAction('admissionPdf', 0); | ||
61 | // Action 'sortie' | 62 | // Action 'sortie' |
62 | $this->setAuthorizationsForAction('sortie', ['ARCHIVED',0], ['user'=>-1, 'resp'=>-1]); | 63 | $this->setAuthorizationsForAction('sortie', ['ARCHIVED',0], ['user'=>-1, 'resp'=>-1]); |
63 | $this->setAuthorizationsForAction('sortiePdf', 'sortie', ['user'=>-1, 'resp'=>-1]); | 64 | $this->setAuthorizationsForAction('sortiePdf', 'sortie', ['user'=>-1, 'resp'=>-1]); |
65 | + $this->setAuthorizationsForAction('sortiePdf', 0); | ||
64 | 66 | ||
65 | } // setAuthorizations | 67 | } // setAuthorizations |
66 | 68 | ||
@@ -90,7 +92,7 @@ class DocumentsController extends AppController | @@ -90,7 +92,7 @@ class DocumentsController extends AppController | ||
90 | return $this->isAuthorizedAction($action, $id, $IS_RELATED_ENTITY_ID); // $user, $userCname | 92 | return $this->isAuthorizedAction($action, $id, $IS_RELATED_ENTITY_ID); // $user, $userCname |
91 | */ | 93 | */ |
92 | $related_matos_id = null; | 94 | $related_matos_id = null; |
93 | - if (in_array($action,['add','admission','sortie'])) { | 95 | + if (in_array($action,['add','admission','admissionPdf','fiche','fichePdf','sortie','sortiePdf'])) { |
94 | // Aucune de ces actions n'est autorisée sans préciser (à l'avance, dans l'url) le matériel concerné | 96 | // Aucune de ces actions n'est autorisée sans préciser (à l'avance, dans l'url) le matériel concerné |
95 | // => access denied | 97 | // => access denied |
96 | if (!$id) return false; | 98 | if (!$id) return false; |
@@ -99,7 +101,7 @@ class DocumentsController extends AppController | @@ -99,7 +101,7 @@ class DocumentsController extends AppController | ||
99 | $id=null; | 101 | $id=null; |
100 | } | 102 | } |
101 | 103 | ||
102 | - return $this->isAuthorizedAction($action, $id, $related_matos_id); // $user, $userCname | 104 | + return $this->isAuthorizedActionForCurrentUser($action, $id, $related_matos_id); // $user, $userCname |
103 | 105 | ||
104 | // LA SUITE EST A VIRER | 106 | // LA SUITE EST A VIRER |
105 | 107 | ||
@@ -569,7 +571,8 @@ class DocumentsController extends AppController | @@ -569,7 +571,8 @@ class DocumentsController extends AppController | ||
569 | } | 571 | } |
570 | 572 | ||
571 | //public function sortiePdf($filename) { | 573 | //public function sortiePdf($filename) { |
572 | - public function sortiePdf() { | 574 | + //public function sortiePdf() { |
575 | + public function sortiePdf($matos_id) { | ||
573 | $this->viewBuilder() | 576 | $this->viewBuilder() |
574 | ->className('Dompdf.Pdf') | 577 | ->className('Dompdf.Pdf') |
575 | ->layout('Dompdf.default') | 578 | ->layout('Dompdf.default') |
@@ -588,28 +591,35 @@ class DocumentsController extends AppController | @@ -588,28 +591,35 @@ class DocumentsController extends AppController | ||
588 | */ | 591 | */ |
589 | ]]); | 592 | ]]); |
590 | } | 593 | } |
591 | - public function sortie($labNumber) | ||
592 | - { | 594 | + //public function sortie($labNumber) |
595 | + public function sortie($matos_id) { | ||
593 | $this->set('fpdf', new FPDF('P', 'mm', 'A4')); | 596 | $this->set('fpdf', new FPDF('P', 'mm', 'A4')); |
594 | //$this->set('fpdf', new FPDF()); | 597 | //$this->set('fpdf', new FPDF()); |
595 | //$this->set('fpdf', new TCPDF('P', 'mm', 'A4')); | 598 | //$this->set('fpdf', new TCPDF('P', 'mm', 'A4')); |
596 | } | 599 | } |
597 | 600 | ||
598 | 601 | ||
599 | - public function admission($labNumber, $pdfEngine="fpdf") | 602 | + //public function admission($labNumber, $pdfEngine="fpdf") |
603 | + public function admission($matos_id, $pdfEngine="fpdf") | ||
600 | { | 604 | { |
605 | + //debug($matos_id); | ||
601 | // only for FPDF | 606 | // only for FPDF |
602 | if ($pdfEngine == "fpdf") $this->set('fpdf', new FPDF('P', 'mm', 'A4')); | 607 | if ($pdfEngine == "fpdf") $this->set('fpdf', new FPDF('P', 'mm', 'A4')); |
603 | //$this->set('fpdf', new TCPDF('P', 'mm', 'A4')); | 608 | //$this->set('fpdf', new TCPDF('P', 'mm', 'A4')); |
604 | 609 | ||
605 | // Find the related materiel | 610 | // Find the related materiel |
606 | - $materiel = TableRegistry::get('Materiels')->find('all', [ | 611 | + $materiel = TableRegistry::getTableLocator()->get('Materiels')->get($matos_id, [ |
612 | + 'contain' => ['Fournisseurs', 'Organismes'] | ||
613 | + ]); | ||
614 | + /* | ||
615 | + //$materiel = TableRegistry::get('Materiels')->find('all', [ | ||
616 | + $materiel = TableRegistry::getTableLocator()->get('Materiels')->find('all', [ | ||
607 | 'conditions' => [ | 617 | 'conditions' => [ |
608 | 'numero_laboratoire' => $labNumber | 618 | 'numero_laboratoire' => $labNumber |
609 | ], | 619 | ], |
610 | 'contain' => ['Fournisseurs', 'Organismes'] | 620 | 'contain' => ['Fournisseurs', 'Organismes'] |
611 | ])->first(); | 621 | ])->first(); |
612 | - // End find | 622 | + */ |
613 | 623 | ||
614 | // Get the administration user name | 624 | // Get the administration user name |
615 | $userName = $this->LdapAuth->user('username'); | 625 | $userName = $this->LdapAuth->user('username'); |
@@ -649,8 +659,10 @@ class DocumentsController extends AppController | @@ -649,8 +659,10 @@ class DocumentsController extends AppController | ||
649 | $this->set('data', $TDoc); | 659 | $this->set('data', $TDoc); |
650 | } // admission() | 660 | } // admission() |
651 | 661 | ||
652 | - public function admissionPdf($labNumber) { | ||
653 | - $this->admission($labNumber, "dompdf"); | 662 | + //public function admissionPdf($labNumber) { |
663 | + public function admissionPdf($matos_id) { | ||
664 | + //$this->admission($labNumber, "dompdf"); | ||
665 | + $this->admission($matos_id, "dompdf"); | ||
654 | $this->viewBuilder() | 666 | $this->viewBuilder() |
655 | ->className('Dompdf.Pdf') | 667 | ->className('Dompdf.Pdf') |
656 | ->layout('Dompdf.default') | 668 | ->layout('Dompdf.default') |
@@ -671,8 +683,10 @@ class DocumentsController extends AppController | @@ -671,8 +683,10 @@ class DocumentsController extends AppController | ||
671 | } | 683 | } |
672 | 684 | ||
673 | 685 | ||
674 | - public function ficheMaterielPdf($labNumber) { | ||
675 | - $this->ficheMateriel($labNumber, "dompdf"); | 686 | + //public function ficheMaterielPdf($labNumber) { |
687 | + public function ficheMaterielPdf($matos_id) { | ||
688 | + //$this->ficheMateriel($labNumber, "dompdf"); | ||
689 | + $this->ficheMateriel($matos_id, "dompdf"); | ||
676 | 690 | ||
677 | $this->viewBuilder() | 691 | $this->viewBuilder() |
678 | ->className('Dompdf.Pdf') | 692 | ->className('Dompdf.Pdf') |
@@ -694,10 +708,14 @@ class DocumentsController extends AppController | @@ -694,10 +708,14 @@ class DocumentsController extends AppController | ||
694 | } | 708 | } |
695 | 709 | ||
696 | //public function ficheMateriel($labNumber) | 710 | //public function ficheMateriel($labNumber) |
697 | - public function ficheMateriel($labNumber, $pdfEngine="fpdf") | 711 | + //public function ficheMateriel($labNumber, $pdfEngine="fpdf") |
712 | + public function ficheMateriel($matos_id, $pdfEngine="fpdf") | ||
698 | { | 713 | { |
699 | 714 | ||
700 | - // Find the concerned materiel | 715 | + // Find the related materiel |
716 | + $materiel = TableRegistry::getTableLocator()->get('Materiels')->get($matos_id, [ | ||
717 | + 'contain' => ['SurCategories', 'Categories', 'SousCategories', 'Fournisseurs', 'Organismes'] | ||
718 | + ]); | ||
701 | /* | 719 | /* |
702 | $materiel = TableRegistry::get('Materiels')->find('all', [ | 720 | $materiel = TableRegistry::get('Materiels')->find('all', [ |
703 | 'conditions' => [ | 721 | 'conditions' => [ |
@@ -705,6 +723,7 @@ class DocumentsController extends AppController | @@ -705,6 +723,7 @@ class DocumentsController extends AppController | ||
705 | ] | 723 | ] |
706 | ])->first(); | 724 | ])->first(); |
707 | */ | 725 | */ |
726 | + /* | ||
708 | $materiel = TableRegistry::get('Materiels')->find('all', [ | 727 | $materiel = TableRegistry::get('Materiels')->find('all', [ |
709 | 'conditions' => [ | 728 | 'conditions' => [ |
710 | 'numero_laboratoire' => $labNumber | 729 | 'numero_laboratoire' => $labNumber |
@@ -712,7 +731,7 @@ class DocumentsController extends AppController | @@ -712,7 +731,7 @@ class DocumentsController extends AppController | ||
712 | 'contain' => ['SurCategories', 'Categories', 'SousCategories', 'Fournisseurs', 'Organismes'] | 731 | 'contain' => ['SurCategories', 'Categories', 'SousCategories', 'Fournisseurs', 'Organismes'] |
713 | ] | 732 | ] |
714 | )->first(); | 733 | )->first(); |
715 | - // End find | 734 | + */ |
716 | 735 | ||
717 | /* | 736 | /* |
718 | if ($materiel->sur_categorie_id !== null) | 737 | if ($materiel->sur_categorie_id !== null) |
src/Template/Materiels/view.ctp
@@ -348,34 +348,43 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN | @@ -348,34 +348,43 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN | ||
348 | if ($PDF_ENGINE == "FPDF") { | 348 | if ($PDF_ENGINE == "FPDF") { |
349 | // FPDF | 349 | // FPDF |
350 | $action = 'admission'; | 350 | $action = 'admission'; |
351 | - $data = $entity->numero_laboratoire; | 351 | + ///$data = $entity->numero_laboratoire; |
352 | + $id = $entity->id; | ||
352 | } | 353 | } |
353 | else { | 354 | else { |
354 | // DOMPDF | 355 | // DOMPDF |
355 | $action = 'admission_pdf'; | 356 | $action = 'admission_pdf'; |
356 | - $data = $entity->numero_laboratoire . ".pdf"; | 357 | + // Il faut ajouter '.pdf' à la suite de l'argument pour que le template |
358 | + // soit cherché dans Documents/pdf/ et non pas Documents/ !!! | ||
359 | + ///$data = $entity->numero_laboratoire . ".pdf"; | ||
360 | + $id = $entity->id . '.pdf'; | ||
357 | } | 361 | } |
358 | // if (($entity->status == 'VALIDATED') || ($entity->status == 'CREATED')) { | 362 | // if (($entity->status == 'VALIDATED') || ($entity->status == 'CREATED')) { |
359 | - $echoActionButton($this->Html, 'icon-file', $bStyle, ' Doc. admission', 'documents', $action, $data, [], "Voir le document d'admission"); | 363 | + //$echoActionButton($this->Html, 'icon-file', $bStyle, ' Doc. admission', 'documents', $action, $data, [], "Voir le document d'admission"); |
364 | + $echoActionButton($this->Html, 'icon-file', $bStyle, ' Doc. admission', 'documents', $action, $id, [], "Voir le document d'admission"); | ||
360 | //} | 365 | //} |
361 | } | 366 | } |
362 | // doc sortie | 367 | // doc sortie |
363 | - if ($CAN_EDIT_DOC_SORTIE) { | 368 | + if (true) { |
369 | + //if ($CAN_EDIT_DOC_SORTIE) { | ||
364 | 370 | ||
365 | // Doc sortie (admin only) | 371 | // Doc sortie (admin only) |
366 | //else if ($IS_ARCHIVED || $IS_TOBEARCHIVED) { | 372 | //else if ($IS_ARCHIVED || $IS_TOBEARCHIVED) { |
367 | if ($PDF_ENGINE == "FPDF") { | 373 | if ($PDF_ENGINE == "FPDF") { |
368 | // FPDF | 374 | // FPDF |
369 | $action = 'sortie'; | 375 | $action = 'sortie'; |
370 | - $data = $entity->numero_laboratoire; | 376 | + $id = $entity->id; |
377 | + //$data = $entity->numero_laboratoire; | ||
371 | } | 378 | } |
372 | else { | 379 | else { |
373 | // DOMPDF | 380 | // DOMPDF |
374 | $action = 'sortie_pdf'; | 381 | $action = 'sortie_pdf'; |
375 | - $data = $entity->numero_laboratoire . ".pdf"; | 382 | + $id = $entity->id . '.pdf'; |
383 | + //$data = $entity->numero_laboratoire . ".pdf"; | ||
376 | } | 384 | } |
377 | // else if (($entity->status == 'ARCHIVED') || ($entity->status == 'TOBEARCHIVED')) { | 385 | // else if (($entity->status == 'ARCHIVED') || ($entity->status == 'TOBEARCHIVED')) { |
378 | - $echoActionButton($this->Html, 'icon-file', $bStyle, ' Doc. sortie', 'documents', $action, $data, [], "Voir le document de sortie"); | 386 | + $echoActionButton($this->Html, 'icon-file', $bStyle, ' Doc. sortie', 'documents', $action, $id, [], "Voir le document de sortie"); |
387 | + //$echoActionButton($this->Html, 'icon-file', $bStyle, ' Doc. sortie', 'documents', $action, $data, [], "Voir le document de sortie"); | ||
379 | //} | 388 | //} |
380 | 389 | ||
381 | } // Doc sortie | 390 | } // Doc sortie |
@@ -488,14 +497,17 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN | @@ -488,14 +497,17 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN | ||
488 | if ($PDF_ENGINE == "FPDF") { | 497 | if ($PDF_ENGINE == "FPDF") { |
489 | // FPDF | 498 | // FPDF |
490 | $action = 'ficheMateriel'; | 499 | $action = 'ficheMateriel'; |
491 | - $data = $entity->numero_laboratoire; | 500 | + $id = $entity->id; |
501 | + //$data = $entity->numero_laboratoire; | ||
492 | } | 502 | } |
493 | else { | 503 | else { |
494 | // DOMPDF | 504 | // DOMPDF |
495 | $action = 'fiche_materiel_pdf'; | 505 | $action = 'fiche_materiel_pdf'; |
496 | - $data = $entity->numero_laboratoire.'.pdf'; | 506 | + $id = $entity->id . '.pdf'; |
507 | + //$data = $entity->numero_laboratoire.'.pdf'; | ||
497 | } | 508 | } |
498 | - $echoActionButton($this->Html, 'icon-file', $bStyleGreen, ' Fiche PDF du matériel', 'documents', $action, $data, [], | 509 | + //$echoActionButton($this->Html, 'icon-file', $bStyleGreen, ' Fiche PDF du matériel', 'documents', $action, $data, [], |
510 | + $echoActionButton($this->Html, 'icon-file', $bStyleGreen, ' Fiche PDF du matériel', 'documents', $action, $id, [], | ||
499 | "Voir la fiche du materiel" | 511 | "Voir la fiche du materiel" |
500 | ); | 512 | ); |
501 | 513 |
tests/TestCase/Controller/General.php
@@ -721,6 +721,9 @@ class General extends TestCase { | @@ -721,6 +721,9 @@ class General extends TestCase { | ||
721 | 721 | ||
722 | 722 | ||
723 | /** | 723 | /** |
724 | + * | ||
725 | + * (EP 20200620) | ||
726 | + * | ||
724 | * Test (automatique) de (presque) TOUTES les actions d'un controleur | 727 | * Test (automatique) de (presque) TOUTES les actions d'un controleur |
725 | * | 728 | * |
726 | * Appelé par chaque test de controleur en passant en paramètre $entities_name (et le reste par DataProvider) | 729 | * Appelé par chaque test de controleur en passant en paramètre $entities_name (et le reste par DataProvider) |
tests/TestCase/Controller/MaterielsControllerTest.php
@@ -1909,6 +1909,8 @@ class MaterielsControllerTest extends General { | @@ -1909,6 +1909,8 @@ class MaterielsControllerTest extends General { | ||
1909 | */ | 1909 | */ |
1910 | 1910 | ||
1911 | /** | 1911 | /** |
1912 | + * (EP 20200625) | ||
1913 | + * | ||
1912 | * Test des vues view.ctp et index.ctp avec tous les profils (roles U,R,A,S) | 1914 | * Test des vues view.ctp et index.ctp avec tous les profils (roles U,R,A,S) |
1913 | * ET tous les materiels de la BD de test (fixture) | 1915 | * ET tous les materiels de la BD de test (fixture) |
1914 | * | 1916 | * |
@@ -1992,6 +1994,8 @@ class MaterielsControllerTest extends General { | @@ -1992,6 +1994,8 @@ class MaterielsControllerTest extends General { | ||
1992 | 1994 | ||
1993 | 1995 | ||
1994 | /** | 1996 | /** |
1997 | + * (EP 20200625) | ||
1998 | + * | ||
1995 | * Test des vues view.ctp et index.ctp avec tous les profils (roles U,R,A,S) | 1999 | * Test des vues view.ctp et index.ctp avec tous les profils (roles U,R,A,S) |
1996 | * ET avec tous les statuts de matériel (C,V,T,A) | 2000 | * ET avec tous les statuts de matériel (C,V,T,A) |
1997 | * (avec un seul matériel de test qui est modifié à volonté) | 2001 | * (avec un seul matériel de test qui est modifié à volonté) |
@@ -2358,17 +2362,8 @@ class MaterielsControllerTest extends General { | @@ -2358,17 +2362,8 @@ class MaterielsControllerTest extends General { | ||
2358 | $this->_testAuthorizationsForAllControllerActions($action, $role_short, $role_long); | 2362 | $this->_testAuthorizationsForAllControllerActions($action, $role_short, $role_long); |
2359 | } | 2363 | } |
2360 | 2364 | ||
2361 | - | ||
2362 | 2365 | ||
2363 | - | ||
2364 | - /** | ||
2365 | - * @dataProvider dataProviderRoles4 | ||
2366 | - */ | ||
2367 | - public function OFF_testActionDeleteMateriel($role) { | ||
2368 | - $this->_testActionDeleteEntity($role); | ||
2369 | - } | ||
2370 | - | ||
2371 | - | 2366 | + // (EP 20200629) |
2372 | private function _assertFlashMessageIsAsExpectedForAction($action, $SUCCESS=true) { | 2367 | private function _assertFlashMessageIsAsExpectedForAction($action, $SUCCESS=true) { |
2373 | $expected_flash_message = 'Le matériel a bien été '; | 2368 | $expected_flash_message = 'Le matériel a bien été '; |
2374 | switch($action) { | 2369 | switch($action) { |
@@ -2420,6 +2415,7 @@ class MaterielsControllerTest extends General { | @@ -2420,6 +2415,7 @@ class MaterielsControllerTest extends General { | ||
2420 | } | 2415 | } |
2421 | } | 2416 | } |
2422 | 2417 | ||
2418 | + // (EP 20200629) | ||
2423 | private function _doActionAndCheckResult($action, $id=null, $SUCCESS=true, $data=[], $controller=null) { | 2419 | private function _doActionAndCheckResult($action, $id=null, $SUCCESS=true, $data=[], $controller=null) { |
2424 | $action_link = Inflector::dasherize($action); // statusValidated => status-validated | 2420 | $action_link = Inflector::dasherize($action); // statusValidated => status-validated |
2425 | //$this->post("/materiels/$action_link/$id"); | 2421 | //$this->post("/materiels/$action_link/$id"); |
@@ -2435,11 +2431,13 @@ class MaterielsControllerTest extends General { | @@ -2435,11 +2431,13 @@ class MaterielsControllerTest extends General { | ||
2435 | $this->_assertFlashMessageIsAsExpectedForAction($action, $SUCCESS); | 2431 | $this->_assertFlashMessageIsAsExpectedForAction($action, $SUCCESS); |
2436 | } | 2432 | } |
2437 | 2433 | ||
2434 | + // (EP 20200629) | ||
2438 | private function _checkMaterielStatusChangedTo($id,$new_status) { | 2435 | private function _checkMaterielStatusChangedTo($id,$new_status) { |
2439 | $m = $this->Materiels->get($id); | 2436 | $m = $this->Materiels->get($id); |
2440 | $this->assertSame($m->status, $new_status); | 2437 | $this->assertSame($m->status, $new_status); |
2441 | } | 2438 | } |
2442 | 2439 | ||
2440 | + // (EP 20200629) | ||
2443 | private function _testMaterielCannotBeModifiedAnymoreExceptIfDevalidated($id) { | 2441 | private function _testMaterielCannotBeModifiedAnymoreExceptIfDevalidated($id) { |
2444 | 2442 | ||
2445 | // On sauve le statut courant | 2443 | // On sauve le statut courant |
@@ -2483,12 +2481,16 @@ class MaterielsControllerTest extends General { | @@ -2483,12 +2481,16 @@ class MaterielsControllerTest extends General { | ||
2483 | } | 2481 | } |
2484 | 2482 | ||
2485 | /** | 2483 | /** |
2484 | + * (EP 20200629) | ||
2485 | + * | ||
2486 | * Test du cycle de vie complet d'un matériel | 2486 | * Test du cycle de vie complet d'un matériel |
2487 | * | 2487 | * |
2488 | * On teste les états-transitions d'un matériel, le passage progressif d'un état à un autre : | 2488 | * On teste les états-transitions d'un matériel, le passage progressif d'un état à un autre : |
2489 | * CREATED => VALIDATED => TBA => ARCHIVED | 2489 | * CREATED => VALIDATED => TBA => ARCHIVED |
2490 | * (on teste aussi toutes les actions qui sont possibles ou pas à chaque état) | 2490 | * (on teste aussi toutes les actions qui sont possibles ou pas à chaque état) |
2491 | * | 2491 | * |
2492 | + * Ce test vérifie le diagramme UML etats-transitions webroot/doc/diagrams/materiel_state_diagram.txt | ||
2493 | + * | ||
2492 | */ | 2494 | */ |
2493 | public function testMaterielLifeCycle() { | 2495 | public function testMaterielLifeCycle() { |
2494 | 2496 | ||
@@ -2597,4 +2599,17 @@ class MaterielsControllerTest extends General { | @@ -2597,4 +2599,17 @@ class MaterielsControllerTest extends General { | ||
2597 | 2599 | ||
2598 | 2600 | ||
2599 | 2601 | ||
2602 | + | ||
2603 | + | ||
2604 | + /** | ||
2605 | + * @dataProvider dataProviderRoles4 | ||
2606 | + */ | ||
2607 | + public function OFF_testActionDeleteMateriel($role) { | ||
2608 | + $this->_testActionDeleteEntity($role); | ||
2609 | + } | ||
2610 | + | ||
2611 | + | ||
2612 | + | ||
2613 | + | ||
2614 | + | ||
2600 | } // class MaterielsControllerTest | 2615 | } // class MaterielsControllerTest |
2601 | \ No newline at end of file | 2616 | \ No newline at end of file |