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 | 54 | VERSION ACTUELLE |
55 | 55 | |
56 | 56 | Date: 26/06/2020 |
57 | -Version: 3.7.9.48 | |
57 | +Version: 3.7.9.49 | |
58 | 58 | Author: EP |
59 | 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 | 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 | 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 | 113 | 25/06/2020 v3.7.9.43-47 (EP) |
106 | 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 | 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 | 1116 | //$CAN_EDIT_OR_DELETE_EMPRUNTS = $CAN_MANAGE_EMPRUNTS; |
1117 | 1117 | |
1118 | 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 | 1120 | //$CAN_MANAGE_FILES = $CONTEXT1; // edit, delete, ou envoi devis par mail |
1121 | 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 | 1137 | $this->set(compact('CAN_MANAGE_SUIVIS', 'CAN_MANAGE_EMPRUNTS', 'CAN_MANAGE_FILES')); |
1124 | 1138 | ... | ... |
src/Template/Materiels/view.ctp
tests/TestCase/Controller/General.php
... | ... | @@ -264,8 +264,8 @@ class General extends TestCase { |
264 | 264 | ]; |
265 | 265 | foreach ($actions as $action) |
266 | 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 | 269 | $item = [ $action, $roles4[$i], $this->ROLES4[$i][0] ]; |
270 | 270 | //debug($item); |
271 | 271 | $actions_and_roles[] = $item; | ... | ... |
tests/TestCase/Controller/MaterielsControllerTest.php
... | ... | @@ -1918,6 +1918,8 @@ class MaterielsControllerTest extends General { |
1918 | 1918 | * @dataProvider dataProviderRoles4 |
1919 | 1919 | */ |
1920 | 1920 | public function testMaterielPagesIndexAndView2($role) { |
1921 | + //if ($role != 'RESP') return; | |
1922 | + | |
1921 | 1923 | $this->authAs($role); |
1922 | 1924 | |
1923 | 1925 | $this->d("*******************"); |
... | ... | @@ -1962,6 +1964,7 @@ class MaterielsControllerTest extends General { |
1962 | 1964 | if ( $m->status!='ARCHIVED' || $this->USER_IS_ADMIN_AT_LEAST() ) |
1963 | 1965 | $this->_checkIndexPageContainsALineForThisMateriel($m,$cm); |
1964 | 1966 | } |
1967 | + | |
1965 | 1968 | // 2) teste sa vue détaillée (et la liste de ses suivis et emprunts) |
1966 | 1969 | $id = $m->id; |
1967 | 1970 | if ($cm->isAuthorizedActionForCurrentUser('view',$id)) { |
... | ... | @@ -1970,9 +1973,10 @@ class MaterielsControllerTest extends General { |
1970 | 1973 | // a) tester que la vue contient bien les boutons attendus |
1971 | 1974 | $this->_checkViewPageContainsAllAuthorizedActionButtonsForMaterielId($id, $user, $cm); |
1972 | 1975 | //TODO: |
1973 | - // b) tester la liste des suivis et emprunts | |
1976 | + // b) tester la liste des suivis, emprunts, et docs | |
1974 | 1977 | $this->_checkViewPageContainsAllRelatedEntitiesForMateriel($m, $user, $cm); |
1975 | 1978 | } |
1979 | + | |
1976 | 1980 | } |
1977 | 1981 | } |
1978 | 1982 | |
... | ... | @@ -2130,7 +2134,7 @@ class MaterielsControllerTest extends General { |
2130 | 2134 | private function _checkViewPageContainsAllRelatedEntitiesForMateriel($m, $user, $cm) { |
2131 | 2135 | $related_entities_names = ['suivis', 'emprunts', 'documents']; |
2132 | 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 | 2139 | // 1) check titre du style "Suivi(s) du matériel (0)" |
2136 | 2140 | $entities = $m->$entities_name; |
... | ... | @@ -2142,12 +2146,12 @@ class MaterielsControllerTest extends General { |
2142 | 2146 | $this->assertResponseContains("$entity_title matériel ("); |
2143 | 2147 | $this->assertResponseContains("$entity_title matériel ($nbentities)"); |
2144 | 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 | 2150 | //debug($suivis); |
2147 | 2151 | |
2148 | 2152 | // 2) check présence de chaque entité avec ses boutons d'action (edit, delete) et ses attributs (nom, autres...) |
2149 | 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 | 2156 | /* a) Boutons action (edit,delete) |
2153 | 2157 | * La présence (ou non) des boutons dépend uniquement du matériel affiché. |
... | ... | @@ -2160,6 +2164,13 @@ class MaterielsControllerTest extends General { |
2160 | 2164 | // delete |
2161 | 2165 | $action = "$entities_name/delete"; // suivis/edit |
2162 | 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 | 2175 | // b) Attributs (nom...) |
2165 | 2176 | //$this->assertResponseContains($e->id); |
... | ... | @@ -2278,7 +2289,7 @@ class MaterielsControllerTest extends General { |
2278 | 2289 | |
2279 | 2290 | //TODO: |
2280 | 2291 | private function _checkActionButtonIsPresentInPage($action_name, $id, $user) { |
2281 | - return true; | |
2292 | + //return true; | |
2282 | 2293 | |
2283 | 2294 | $controller_name = null; |
2284 | 2295 | $controller = null; |
... | ... | @@ -2288,13 +2299,17 @@ class MaterielsControllerTest extends General { |
2288 | 2299 | $action_name = $args[1]; |
2289 | 2300 | $controller = $this->_getControllerInstanceFromName($controller_name); |
2290 | 2301 | //} |
2302 | + //debug($action_name); | |
2291 | 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 | 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 | 2309 | if ($button_should_be_present) |
2295 | 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 | 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 | 2315 | private function _checkActionButtonIsPresentInIndexPage($action, $id, $cm) { | ... | ... |