Commit 4caeda09cc70792d5d86e7fa9b69bf7e2812e884

Authored by Etienne Pallier
1 parent c194ff64
Exists in master and in 1 other branch dev

- 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 !
@@ -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) {