Commit 4caeda09cc70792d5d86e7fa9b69bf7e2812e884
1 parent
c194ff64
Exists in
master
and in
1 other branch
- TEST3 : Ajout (terminé) d'un 3ème (et DERNIER) gros test (v3.7.9.49)
- 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 - tous les tests passent - ... Je vais enfin pouvoir passer à AUTRE CHOSE QUE LES TESTS !! genre, des choses plus constructives !
Showing
5 changed files
with
50 additions
and
13 deletions
Show diff stats
README.md
@@ -54,10 +54,13 @@ Logiciel testé et validé sur les configurations suivantes : | @@ -54,10 +54,13 @@ Logiciel testé et validé sur les configurations suivantes : | ||
54 | VERSION ACTUELLE | 54 | VERSION ACTUELLE |
55 | 55 | ||
56 | Date: 26/06/2020 | 56 | Date: 26/06/2020 |
57 | -Version: 3.7.9.48 | 57 | +Version: 3.7.9.49 |
58 | Author: EP | 58 | Author: EP |
59 | Commentaire: | 59 | Commentaire: |
60 | - - 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). | 60 | + - 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) |
61 | + - bugfix autorisations d'affichage des boutons d'action sur documents dans materiels/view/ | ||
62 | + - Nombreuses refactorisations | ||
63 | + - ... | ||
61 | 64 | ||
62 | - Amélioration page /pages/acls | 65 | - Amélioration page /pages/acls |
63 | 66 | ||
@@ -102,6 +105,11 @@ La liste ci-dessous est aussi en ligne ici : https://tinyurl.com/labinvent#headi | @@ -102,6 +105,11 @@ La liste ci-dessous est aussi en ligne ici : https://tinyurl.com/labinvent#headi | ||
102 | 105 | ||
103 | ----------------------------------------------------------------------------------------------------------- | 106 | ----------------------------------------------------------------------------------------------------------- |
104 | 107 | ||
108 | +26/06/2020 v3.7.9.48-49 (EP) | ||
109 | + - 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). | ||
110 | + - bugfix autorisations d'affichage des boutons d'action sur documents dans materiels/view/ | ||
111 | + - Nombreuses refactorisations | ||
112 | + | ||
105 | 25/06/2020 v3.7.9.43-47 (EP) | 113 | 25/06/2020 v3.7.9.43-47 (EP) |
106 | - 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) | 114 | - 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) |
107 | à partir d'UN UNIQUE matériel de test qui est modifié à souhait pour essayer de représenter tous les grands cas possibles | 115 | à partir d'UN UNIQUE matériel de test qui est modifié à souhait pour essayer de représenter tous les grands cas possibles |
src/Controller/MaterielsController.php
@@ -1116,9 +1116,23 @@ class MaterielsController extends AppController { | @@ -1116,9 +1116,23 @@ class MaterielsController extends AppController { | ||
1116 | //$CAN_EDIT_OR_DELETE_EMPRUNTS = $CAN_MANAGE_EMPRUNTS; | 1116 | //$CAN_EDIT_OR_DELETE_EMPRUNTS = $CAN_MANAGE_EMPRUNTS; |
1117 | 1117 | ||
1118 | // - docs liés | 1118 | // - docs liés |
1119 | - $CAN_MANAGE_FILES = $CAN_EDIT; // edit, delete, ou envoi devis par mail | 1119 | + //$CAN_MANAGE_FILES = $CAN_EDIT; // edit, delete, ou envoi devis par mail |
1120 | //$CAN_MANAGE_FILES = $CONTEXT1; // edit, delete, ou envoi devis par mail | 1120 | //$CAN_MANAGE_FILES = $CONTEXT1; // edit, delete, ou envoi devis par mail |
1121 | //$CAN_MANAGE_FILES = $dc->isAuthorized($u,'edit') && $dc->isAuthorized($u,'delete') && $dc->isAuthorized($u,'mailDevis'); | 1121 | //$CAN_MANAGE_FILES = $dc->isAuthorized($u,'edit') && $dc->isAuthorized($u,'delete') && $dc->isAuthorized($u,'mailDevis'); |
1122 | + $CAN_MANAGE_FILES = false; | ||
1123 | + if ($e->documents) { | ||
1124 | + $e1 = $e->documents[0]; | ||
1125 | + //debug($emprunt1); | ||
1126 | + //$CAN_MANAGE_EMPRUNTS = $ec->isAuthorizedAction('edit', $emprunt1->id, false, $u); | ||
1127 | + $CAN_MANAGE_FILES = $dc->isAuthorizedActionForCurrentUser('edit', $e1->id, null, $u); | ||
1128 | + // on peut faire de même avec l'action delete | ||
1129 | + //$CAN_MANAGE_EMPRUNTS = $sc->isAuthorized($u,'delete', $suivi1->id); | ||
1130 | + } | ||
1131 | + $this->d("CAN_MANAGE_FILES ? "); $this->d2($CAN_MANAGE_FILES); | ||
1132 | + $CAN_EDIT_OR_DELETE_OR_SENDBYMAIL_FILES = $CAN_MANAGE_FILES; | ||
1133 | + | ||
1134 | + | ||
1135 | + | ||
1122 | 1136 | ||
1123 | $this->set(compact('CAN_MANAGE_SUIVIS', 'CAN_MANAGE_EMPRUNTS', 'CAN_MANAGE_FILES')); | 1137 | $this->set(compact('CAN_MANAGE_SUIVIS', 'CAN_MANAGE_EMPRUNTS', 'CAN_MANAGE_FILES')); |
1124 | 1138 |
src/Template/Materiels/view.ctp
@@ -988,7 +988,7 @@ if ($role == 'Super Administrateur') { | @@ -988,7 +988,7 @@ if ($role == 'Super Administrateur') { | ||
988 | 'style' => 'margin:0', | 988 | 'style' => 'margin:0', |
989 | 'confirm' => __(' Voulez vous envoyer le document par mail ? ') | 989 | 'confirm' => __(' Voulez vous envoyer le document par mail ? ') |
990 | ]); | 990 | ]); |
991 | - } | 991 | + } |
992 | ?> | 992 | ?> |
993 | </td> <!-- 4 ICONES --> | 993 | </td> <!-- 4 ICONES --> |
994 | 994 |
tests/TestCase/Controller/General.php
@@ -264,8 +264,8 @@ class General extends TestCase { | @@ -264,8 +264,8 @@ class General extends TestCase { | ||
264 | ]; | 264 | ]; |
265 | foreach ($actions as $action) | 265 | foreach ($actions as $action) |
266 | //foreach ([0,1] as $i) { | 266 | //foreach ([0,1] as $i) { |
267 | - //foreach ([0] as $i) { | ||
268 | - foreach ([0,1,2,3] as $i) { | 267 | + foreach ([1] as $i) { |
268 | + //foreach ([0,1,2,3] as $i) { | ||
269 | $item = [ $action, $roles4[$i], $this->ROLES4[$i][0] ]; | 269 | $item = [ $action, $roles4[$i], $this->ROLES4[$i][0] ]; |
270 | //debug($item); | 270 | //debug($item); |
271 | $actions_and_roles[] = $item; | 271 | $actions_and_roles[] = $item; |
tests/TestCase/Controller/MaterielsControllerTest.php
@@ -1918,6 +1918,8 @@ class MaterielsControllerTest extends General { | @@ -1918,6 +1918,8 @@ class MaterielsControllerTest extends General { | ||
1918 | * @dataProvider dataProviderRoles4 | 1918 | * @dataProvider dataProviderRoles4 |
1919 | */ | 1919 | */ |
1920 | public function testMaterielPagesIndexAndView2($role) { | 1920 | public function testMaterielPagesIndexAndView2($role) { |
1921 | + //if ($role != 'RESP') return; | ||
1922 | + | ||
1921 | $this->authAs($role); | 1923 | $this->authAs($role); |
1922 | 1924 | ||
1923 | $this->d("*******************"); | 1925 | $this->d("*******************"); |
@@ -1962,6 +1964,7 @@ class MaterielsControllerTest extends General { | @@ -1962,6 +1964,7 @@ class MaterielsControllerTest extends General { | ||
1962 | if ( $m->status!='ARCHIVED' || $this->USER_IS_ADMIN_AT_LEAST() ) | 1964 | if ( $m->status!='ARCHIVED' || $this->USER_IS_ADMIN_AT_LEAST() ) |
1963 | $this->_checkIndexPageContainsALineForThisMateriel($m,$cm); | 1965 | $this->_checkIndexPageContainsALineForThisMateriel($m,$cm); |
1964 | } | 1966 | } |
1967 | + | ||
1965 | // 2) teste sa vue détaillée (et la liste de ses suivis et emprunts) | 1968 | // 2) teste sa vue détaillée (et la liste de ses suivis et emprunts) |
1966 | $id = $m->id; | 1969 | $id = $m->id; |
1967 | if ($cm->isAuthorizedActionForCurrentUser('view',$id)) { | 1970 | if ($cm->isAuthorizedActionForCurrentUser('view',$id)) { |
@@ -1970,9 +1973,10 @@ class MaterielsControllerTest extends General { | @@ -1970,9 +1973,10 @@ class MaterielsControllerTest extends General { | ||
1970 | // a) tester que la vue contient bien les boutons attendus | 1973 | // a) tester que la vue contient bien les boutons attendus |
1971 | $this->_checkViewPageContainsAllAuthorizedActionButtonsForMaterielId($id, $user, $cm); | 1974 | $this->_checkViewPageContainsAllAuthorizedActionButtonsForMaterielId($id, $user, $cm); |
1972 | //TODO: | 1975 | //TODO: |
1973 | - // b) tester la liste des suivis et emprunts | 1976 | + // b) tester la liste des suivis, emprunts, et docs |
1974 | $this->_checkViewPageContainsAllRelatedEntitiesForMateriel($m, $user, $cm); | 1977 | $this->_checkViewPageContainsAllRelatedEntitiesForMateriel($m, $user, $cm); |
1975 | } | 1978 | } |
1979 | + | ||
1976 | } | 1980 | } |
1977 | } | 1981 | } |
1978 | 1982 | ||
@@ -2130,7 +2134,7 @@ class MaterielsControllerTest extends General { | @@ -2130,7 +2134,7 @@ class MaterielsControllerTest extends General { | ||
2130 | private function _checkViewPageContainsAllRelatedEntitiesForMateriel($m, $user, $cm) { | 2134 | private function _checkViewPageContainsAllRelatedEntitiesForMateriel($m, $user, $cm) { |
2131 | $related_entities_names = ['suivis', 'emprunts', 'documents']; | 2135 | $related_entities_names = ['suivis', 'emprunts', 'documents']; |
2132 | foreach ($related_entities_names as $entities_name) { | 2136 | foreach ($related_entities_names as $entities_name) { |
2133 | - debug("- ******* Checking presence (in view) of related entity $entities_name *******"); | 2137 | + $this->d("- ******* Checking presence (in view) of related entity $entities_name *******"); |
2134 | 2138 | ||
2135 | // 1) check titre du style "Suivi(s) du matériel (0)" | 2139 | // 1) check titre du style "Suivi(s) du matériel (0)" |
2136 | $entities = $m->$entities_name; | 2140 | $entities = $m->$entities_name; |
@@ -2142,12 +2146,12 @@ class MaterielsControllerTest extends General { | @@ -2142,12 +2146,12 @@ class MaterielsControllerTest extends General { | ||
2142 | $this->assertResponseContains("$entity_title matériel ("); | 2146 | $this->assertResponseContains("$entity_title matériel ("); |
2143 | $this->assertResponseContains("$entity_title matériel ($nbentities)"); | 2147 | $this->assertResponseContains("$entity_title matériel ($nbentities)"); |
2144 | //$related_entities = $m->suivis; | 2148 | //$related_entities = $m->suivis; |
2145 | - debug("for matos $m->id, $entities_name entities are"); | 2149 | + //debug("for matos $m->id, $entities_name entities are"); |
2146 | //debug($suivis); | 2150 | //debug($suivis); |
2147 | 2151 | ||
2148 | // 2) check présence de chaque entité avec ses boutons d'action (edit, delete) et ses attributs (nom, autres...) | 2152 | // 2) check présence de chaque entité avec ses boutons d'action (edit, delete) et ses attributs (nom, autres...) |
2149 | foreach ($entities as $e) { | 2153 | foreach ($entities as $e) { |
2150 | - debug("check entity id $e->id name $e->nom"); | 2154 | + //debug("check entity id $e->id name $e->nom"); |
2151 | 2155 | ||
2152 | /* a) Boutons action (edit,delete) | 2156 | /* a) Boutons action (edit,delete) |
2153 | * La présence (ou non) des boutons dépend uniquement du matériel affiché. | 2157 | * La présence (ou non) des boutons dépend uniquement du matériel affiché. |
@@ -2160,6 +2164,13 @@ class MaterielsControllerTest extends General { | @@ -2160,6 +2164,13 @@ class MaterielsControllerTest extends General { | ||
2160 | // delete | 2164 | // delete |
2161 | $action = "$entities_name/delete"; // suivis/edit | 2165 | $action = "$entities_name/delete"; // suivis/edit |
2162 | $this->_checkActionButtonIsPresentInPage($action, $e->id, $user); | 2166 | $this->_checkActionButtonIsPresentInPage($action, $e->id, $user); |
2167 | + /* | ||
2168 | + // (docs) mailDevis | ||
2169 | + if ($entities_name == 'documents') { | ||
2170 | + $action = "$entities_name/mailDevis"; // suivis/edit | ||
2171 | + $this->_checkActionButtonIsPresentInPage($action, $e->id, $user); | ||
2172 | + } | ||
2173 | + */ | ||
2163 | 2174 | ||
2164 | // b) Attributs (nom...) | 2175 | // b) Attributs (nom...) |
2165 | //$this->assertResponseContains($e->id); | 2176 | //$this->assertResponseContains($e->id); |
@@ -2278,7 +2289,7 @@ class MaterielsControllerTest extends General { | @@ -2278,7 +2289,7 @@ class MaterielsControllerTest extends General { | ||
2278 | 2289 | ||
2279 | //TODO: | 2290 | //TODO: |
2280 | private function _checkActionButtonIsPresentInPage($action_name, $id, $user) { | 2291 | private function _checkActionButtonIsPresentInPage($action_name, $id, $user) { |
2281 | - return true; | 2292 | + //return true; |
2282 | 2293 | ||
2283 | $controller_name = null; | 2294 | $controller_name = null; |
2284 | $controller = null; | 2295 | $controller = null; |
@@ -2288,13 +2299,17 @@ class MaterielsControllerTest extends General { | @@ -2288,13 +2299,17 @@ class MaterielsControllerTest extends General { | ||
2288 | $action_name = $args[1]; | 2299 | $action_name = $args[1]; |
2289 | $controller = $this->_getControllerInstanceFromName($controller_name); | 2300 | $controller = $this->_getControllerInstanceFromName($controller_name); |
2290 | //} | 2301 | //} |
2302 | + //debug($action_name); | ||
2291 | $button_should_be_present = $controller->isAuthorizedActionForCurrentUser($action_name, $id, null, $user); | 2303 | $button_should_be_present = $controller->isAuthorizedActionForCurrentUser($action_name, $id, null, $user); |
2304 | + //debug("button_should_be_present is"); debug($button_should_be_present); | ||
2292 | $action_link = Inflector::dasherize($action_name); // statusTobearchived => status-tobearchived | 2305 | $action_link = Inflector::dasherize($action_name); // statusTobearchived => status-tobearchived |
2293 | - $elem = '<a href="/'.$controller_name.'/'.$action_link.'/'.$id.'"'; // <a href="/materiels/status-tobearchived/12015" | 2306 | + //$elem = '<a href="/'.$controller_name.'/'.$action_link.'/'.$id.'"'; // <a href="/materiels/status-tobearchived/12015" |
2307 | + $elem = '/'.$controller_name.'/'.$action_link.'/'.$id; // <a href="/materiels/status-tobearchived/12015" | ||
2308 | + //debug($elem); | ||
2294 | if ($button_should_be_present) | 2309 | if ($button_should_be_present) |
2295 | $this->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 !"); | 2310 | $this->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 !"); |
2296 | else | 2311 | else |
2297 | - $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 !"); | 2312 | + $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 !"); |
2298 | } | 2313 | } |
2299 | 2314 | ||
2300 | private function _checkActionButtonIsPresentInIndexPage($action, $id, $cm) { | 2315 | private function _checkActionButtonIsPresentInIndexPage($action, $id, $cm) { |