diff --git a/README.md b/README.md index 1ec7179..2617bd5 100644 --- a/README.md +++ b/README.md @@ -54,10 +54,13 @@ Logiciel testé et validé sur les configurations suivantes : VERSION ACTUELLE Date: 26/06/2020 -Version: 3.7.9.48 +Version: 3.7.9.49 Author: EP Commentaire: - - TEST3 : Ajout en cours (presque fini) 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). + - TEST3 : Ajout (terminé) 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) + - bugfix autorisations d'affichage des boutons d'action sur documents dans materiels/view/ + - Nombreuses refactorisations + - ... - Amélioration page /pages/acls @@ -102,6 +105,11 @@ La liste ci-dessous est aussi en ligne ici : https://tinyurl.com/labinvent#headi ----------------------------------------------------------------------------------------------------------- +26/06/2020 v3.7.9.48-49 (EP) + - 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). + - bugfix autorisations d'affichage des boutons d'action sur documents dans materiels/view/ + - Nombreuses refactorisations + 25/06/2020 v3.7.9.43-47 (EP) - TEST2 : Ajout d'un 2ème très gros test générique des vues index et view de Materiels (/materiels/index et /view) qui teste le CONTENU des vues (les boutons d'action) à partir d'UN UNIQUE matériel de test qui est modifié à souhait pour essayer de représenter tous les grands cas possibles diff --git a/src/Controller/MaterielsController.php b/src/Controller/MaterielsController.php index 1e4c3a8..9301344 100755 --- a/src/Controller/MaterielsController.php +++ b/src/Controller/MaterielsController.php @@ -1116,9 +1116,23 @@ class MaterielsController extends AppController { //$CAN_EDIT_OR_DELETE_EMPRUNTS = $CAN_MANAGE_EMPRUNTS; // - docs liés - $CAN_MANAGE_FILES = $CAN_EDIT; // edit, delete, ou envoi devis par mail + //$CAN_MANAGE_FILES = $CAN_EDIT; // edit, delete, ou envoi devis par mail //$CAN_MANAGE_FILES = $CONTEXT1; // edit, delete, ou envoi devis par mail //$CAN_MANAGE_FILES = $dc->isAuthorized($u,'edit') && $dc->isAuthorized($u,'delete') && $dc->isAuthorized($u,'mailDevis'); + $CAN_MANAGE_FILES = false; + if ($e->documents) { + $e1 = $e->documents[0]; + //debug($emprunt1); + //$CAN_MANAGE_EMPRUNTS = $ec->isAuthorizedAction('edit', $emprunt1->id, false, $u); + $CAN_MANAGE_FILES = $dc->isAuthorizedActionForCurrentUser('edit', $e1->id, null, $u); + // on peut faire de même avec l'action delete + //$CAN_MANAGE_EMPRUNTS = $sc->isAuthorized($u,'delete', $suivi1->id); + } + $this->d("CAN_MANAGE_FILES ? "); $this->d2($CAN_MANAGE_FILES); + $CAN_EDIT_OR_DELETE_OR_SENDBYMAIL_FILES = $CAN_MANAGE_FILES; + + + $this->set(compact('CAN_MANAGE_SUIVIS', 'CAN_MANAGE_EMPRUNTS', 'CAN_MANAGE_FILES')); diff --git a/src/Template/Materiels/view.ctp b/src/Template/Materiels/view.ctp index 0ab50e9..ee37888 100755 --- a/src/Template/Materiels/view.ctp +++ b/src/Template/Materiels/view.ctp @@ -988,7 +988,7 @@ if ($role == 'Super Administrateur') { 'style' => 'margin:0', 'confirm' => __(' Voulez vous envoyer le document par mail ? ') ]); - } + } ?> diff --git a/tests/TestCase/Controller/General.php b/tests/TestCase/Controller/General.php index 99b1233..0af4583 100644 --- a/tests/TestCase/Controller/General.php +++ b/tests/TestCase/Controller/General.php @@ -264,8 +264,8 @@ class General extends TestCase { ]; foreach ($actions as $action) //foreach ([0,1] as $i) { - //foreach ([0] as $i) { - foreach ([0,1,2,3] as $i) { + foreach ([1] as $i) { + //foreach ([0,1,2,3] as $i) { $item = [ $action, $roles4[$i], $this->ROLES4[$i][0] ]; //debug($item); $actions_and_roles[] = $item; diff --git a/tests/TestCase/Controller/MaterielsControllerTest.php b/tests/TestCase/Controller/MaterielsControllerTest.php index e51569c..2227eb8 100755 --- a/tests/TestCase/Controller/MaterielsControllerTest.php +++ b/tests/TestCase/Controller/MaterielsControllerTest.php @@ -1918,6 +1918,8 @@ class MaterielsControllerTest extends General { * @dataProvider dataProviderRoles4 */ public function testMaterielPagesIndexAndView2($role) { + //if ($role != 'RESP') return; + $this->authAs($role); $this->d("*******************"); @@ -1962,6 +1964,7 @@ class MaterielsControllerTest extends General { if ( $m->status!='ARCHIVED' || $this->USER_IS_ADMIN_AT_LEAST() ) $this->_checkIndexPageContainsALineForThisMateriel($m,$cm); } + // 2) teste sa vue détaillée (et la liste de ses suivis et emprunts) $id = $m->id; if ($cm->isAuthorizedActionForCurrentUser('view',$id)) { @@ -1970,9 +1973,10 @@ class MaterielsControllerTest extends General { // a) tester que la vue contient bien les boutons attendus $this->_checkViewPageContainsAllAuthorizedActionButtonsForMaterielId($id, $user, $cm); //TODO: - // b) tester la liste des suivis et emprunts + // b) tester la liste des suivis, emprunts, et docs $this->_checkViewPageContainsAllRelatedEntitiesForMateriel($m, $user, $cm); } + } } @@ -2130,7 +2134,7 @@ class MaterielsControllerTest extends General { private function _checkViewPageContainsAllRelatedEntitiesForMateriel($m, $user, $cm) { $related_entities_names = ['suivis', 'emprunts', 'documents']; foreach ($related_entities_names as $entities_name) { - debug("- ******* Checking presence (in view) of related entity $entities_name *******"); + $this->d("- ******* Checking presence (in view) of related entity $entities_name *******"); // 1) check titre du style "Suivi(s) du matériel (0)" $entities = $m->$entities_name; @@ -2142,12 +2146,12 @@ class MaterielsControllerTest extends General { $this->assertResponseContains("$entity_title matériel ("); $this->assertResponseContains("$entity_title matériel ($nbentities)"); //$related_entities = $m->suivis; - debug("for matos $m->id, $entities_name entities are"); + //debug("for matos $m->id, $entities_name entities are"); //debug($suivis); // 2) check présence de chaque entité avec ses boutons d'action (edit, delete) et ses attributs (nom, autres...) foreach ($entities as $e) { - debug("check entity id $e->id name $e->nom"); + //debug("check entity id $e->id name $e->nom"); /* a) Boutons action (edit,delete) * La présence (ou non) des boutons dépend uniquement du matériel affiché. @@ -2160,6 +2164,13 @@ class MaterielsControllerTest extends General { // delete $action = "$entities_name/delete"; // suivis/edit $this->_checkActionButtonIsPresentInPage($action, $e->id, $user); + /* + // (docs) mailDevis + if ($entities_name == 'documents') { + $action = "$entities_name/mailDevis"; // suivis/edit + $this->_checkActionButtonIsPresentInPage($action, $e->id, $user); + } + */ // b) Attributs (nom...) //$this->assertResponseContains($e->id); @@ -2278,7 +2289,7 @@ class MaterielsControllerTest extends General { //TODO: private function _checkActionButtonIsPresentInPage($action_name, $id, $user) { - return true; + //return true; $controller_name = null; $controller = null; @@ -2288,13 +2299,17 @@ class MaterielsControllerTest extends General { $action_name = $args[1]; $controller = $this->_getControllerInstanceFromName($controller_name); //} + //debug($action_name); $button_should_be_present = $controller->isAuthorizedActionForCurrentUser($action_name, $id, null, $user); + //debug("button_should_be_present is"); debug($button_should_be_present); $action_link = Inflector::dasherize($action_name); // statusTobearchived => status-tobearchived - $elem = 'assertResponseContains($elem, "La ligne du $controller_name d'id $id dans la vue 'view' des matériels (/materiels/view) NE contient PAS le bouton '$action_name' ($action_link) pourtant attendu !"); else - $this->assertResponseContains($elem, "La ligne du $controller_name d'id $id dans la vue 'view' des matériels (/materiels/view) contient le bouton '$action_name' ($action_link) pourtant inattendu !"); + $this->assertResponseNotContains($elem, "La ligne du $controller_name d'id $id dans la vue 'view' des matériels (/materiels/view) contient le bouton '$action_name' ($action_link) pourtant inattendu !"); } private function _checkActionButtonIsPresentInIndexPage($action, $id, $cm) { -- libgit2 0.21.2