Commit 2eb4bb8576ca2340c532afa4c21aff10c77b5e80

Authored by Etienne Pallier
2 parents d15fea7e 4caeda09
Exists in master and in 1 other branch dev

Merge dev branch into master branch (vv3.7.9.49)

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
... ... @@ -988,7 +988,7 @@ if ($role == 'Super Administrateur') {
988 988 'style' => 'margin:0',
989 989 'confirm' => __(' Voulez vous envoyer le document par mail ? ')
990 990 ]);
991   - }
  991 + }
992 992 ?>
993 993 </td> <!-- 4 ICONES -->
994 994  
... ...
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) {
... ...