diff --git a/library/Class/Profil.php b/library/Class/Profil.php index fcc9a3844cbfc26ebbade70a803c1f42be5c65d6..cd3e6c459156db84fddd050ee51cfc4d4aef704a 100644 --- a/library/Class/Profil.php +++ b/library/Class/Profil.php @@ -1597,6 +1597,12 @@ class Class_Profil extends Storm_Model_Abstract { public function afterSave() { $this->_has_parent_profil = null; $this->_should_forward_attributes = []; + $this->syncModulesIds(); + } + + + + protected function syncModulesIds() { $this->syncModulesIdsWithParentProfil(); } @@ -1641,7 +1647,7 @@ class Class_Profil extends Storm_Model_Abstract { $module_cfg = $cfg_accueil['modules'][$id]; unset($cfg_accueil['modules'][$id]); $cfg_accueil['modules'][$new_id] = $module_cfg; - $this->setCfgAccueil($cfg_accueil); + $this->setCfgAccueil($cfg_accueil)->save(); return $this; } diff --git a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php index dd314b0bdddc8f4910610228498f08102a0646ea..fcdc094e1b579e03b0b76943ffe58319cd685649 100644 --- a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php +++ b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php @@ -1101,7 +1101,7 @@ class ProfilOptionsControllerPageJeuxViewModuleCritiquesTest extends ProfilOptio */ public function breadcrumbShouldNotContainsSpanProfilJeunesse() { $this->assertNotXPathContentContains('//div[@class="barre_nav"]//span', - 'Jeunesse',$this->_response->getBody()); + 'Jeunesse',$this->_response->getBody()); } @@ -1184,7 +1184,7 @@ class ProfilOptionsControllerProfilBreadcrumbHomePageTest extends ProfilOptionsC */ public function breadcrumbShouldNotContainsSpanProfilHomePage() { $this->assertNotXPathContentContains('//div[@class="barre_nav"]//span', - 'HomePage',$this->_response->getBody()); + 'HomePage',$this->_response->getBody()); } } @@ -2367,48 +2367,93 @@ class ProfilOptionsControllerSelectedActionInMenuVerticalWidgetInHomeTest extend -class ProfilOptionControllerWithHeritedBannerTest extends AbstractControllerTestCase { +abstract class ProfilOptionControllerHeritedModulesTestCase extends AbstractControllerTestCase { + protected $_profil_portal, $_profil_gnu; + public function setUp() { parent::setUp(); - $profil_portal = $this->fixture('Class_Profil', - ['id' => 1, - 'browser' => 'opac', - 'libelle' => 'Bokeh Portal']) - ->setCfgAccueil(['modules' => ['1' => ['division' => '4', - 'type_module' => 'RECH_SIMPLE', - 'preferences' => []], - '4' => ['division' => '4', - 'type_module' => 'NEWS']]]); - - $profil_gnu = $this->fixture('Class_profil', - ['id' => 2, - 'parent_profil' => $profil_portal, - 'browser' => 'opac', - 'libelle' => 'A GNU Portal']) - ->setCfgAccueil(['modules' => ['4' => ['division' => '1', - 'type_module' => 'NEWS'], - '10' => ['division' => '1', - 'type_module' => 'NEWS']]]); - $profil_gnu->save(); - $profil_gnu->beCurrentProfil(); + $this->fixture('Class_AdminVar',['id'=>'MENU_BOITE', 'valeur' => 0]); + + $this->_profil_portal = $this->fixture('Class_Profil', + ['id' => 1, + 'browser' => 'opac', + 'libelle' => 'Bokeh Portal']) + ->setCfgAccueil(['modules' => ['1' => ['division' => '4', + 'type_module' => 'RECH_SIMPLE', + 'preferences' => []], + '4' => ['division' => '4', + 'type_module' => 'NEWS']]]); + + $this->_profil_gnu = $this->fixture('Class_profil', + ['id' => 2, + 'parent_profil' => $this->_profil_portal, + 'browser' => 'opac', + 'libelle' => 'A GNU Portal']) + ->setCfgAccueil(['modules' => ['4' => ['division' => '1', + 'type_module' => 'NEWS'], + '10' => ['division' => '1', + 'type_module' => 'NEWS']]]); + } +} + + +class ProfilOptionControllerWithHeritedBannerTest extends ProfilOptionControllerHeritedModulesTestCase { + + public function setUp() { + parent::setUp(); + $this->_profil_gnu->beCurrentProfil()->save(); $this->dispatch('/opac', true); } /** @test */ - public function htmlShouldCOntainsOnlyOneIdBoite4() { + public function htmlShouldContainsOnlyOneIdBoite4() { $this->assertXPathCount('//div[@id="boite_4"]', 1); } /** @test */ - public function htmlShouldCOntainsIdBoite11() { + public function htmlShouldContainsIdBoite11() { $this->assertXPathCount('//div[@id="boite_11"]', 1); } + /** @test */ + public function profilShouldIncrementCfgIdsAndDeleteOldId() { + $this->assertEquals([10,11], array_keys(Class_Profil::find(2)->getCfgAccueilAsArray()['modules'])); + } +} + + + +class ProfilOptionControllerWithHeritedPagesTest extends ProfilOptionControllerHeritedModulesTestCase { + + public function setUp() { + parent::setUp(); + + $this->_profil_portal + ->setSubProfils([$this->_profil_gnu]) + ->beCurrentProfil() + ->save(); + + $this->dispatch('/opac', true); + } + + + /** @test */ + public function htmlShouldContainsIdBoite1() { + $this->assertXPathCount('//div[@id="boite_1"]', 1); + } + + + /** @test */ + public function htmlShouldContainsIdBoite4() { + $this->assertXPathCount('//div[@id="boite_4"]', 1); + } + + /** @test */ public function profilShouldIncrementCfgIdsAndDeleteOldId() { $this->assertEquals([10,11], array_keys(Class_Profil::find(2)->getCfgAccueilAsArray()['modules']));