From 956efda5cbcd5a0df7506f5503619736e345fd9d Mon Sep 17 00:00:00 2001 From: Ghislain Loas <ghislo@sandbox.pergame.net> Date: Wed, 5 Oct 2016 15:25:39 +0200 Subject: [PATCH] dev #47780 : refacto --- cosmogramme/cosmozend/tests/bootstrap.php | 1 + library/Class/DigitalResource.php | 3 +- library/Class/DigitalResource/Config.php | 3 + library/digital_resources/Assimil/Config.php | 19 +++-- .../digital_resources/Assimil/ModuleMenu.php | 11 +-- library/digital_resources/Assimil/Service.php | 2 +- .../Assimil/tests/AssimilTest.php | 77 +++++++++++++++---- .../ProfilOptionsControllerTest.php | 6 -- .../fixtures/RessourcesNumeriquesFixtures.php | 11 --- 9 files changed, 87 insertions(+), 46 deletions(-) diff --git a/cosmogramme/cosmozend/tests/bootstrap.php b/cosmogramme/cosmozend/tests/bootstrap.php index 42ef07542e9..8c1584a12e6 100644 --- a/cosmogramme/cosmozend/tests/bootstrap.php +++ b/cosmogramme/cosmozend/tests/bootstrap.php @@ -36,6 +36,7 @@ set_include_path( $cosmozendPath . PATH_SEPARATOR . $cosmozendPath . '/tests' . PATH_SEPARATOR . $cosmozendPath . '/application' . PATH_SEPARATOR . $cosmozendPath . '/library' +. PATH_SEPARATOR . $cosmozendPath . '/../../library/digital_resources' . PATH_SEPARATOR . get_include_path()); Zend_Session::start(); diff --git a/library/Class/DigitalResource.php b/library/Class/DigitalResource.php index 117c4a302d6..00d77bad214 100644 --- a/library/Class/DigitalResource.php +++ b/library/Class/DigitalResource.php @@ -124,7 +124,8 @@ class Class_DigitalResource extends Class_Entity { $modules = []; $this->withPluginsDo( function($name, $config) use (&$modules){ - $modules[$config->getName()] = $config->getModuleMenu(); + $moduleMenu = $config->getModuleMenu(); + $modules[$config->getName()] = new $moduleMenu; }); return $modules; diff --git a/library/Class/DigitalResource/Config.php b/library/Class/DigitalResource/Config.php index 7c7a6889fd2..ac5e01862c0 100644 --- a/library/Class/DigitalResource/Config.php +++ b/library/Class/DigitalResource/Config.php @@ -31,6 +31,9 @@ class Class_DigitalResource_Config extends Class_Entity { : (new Class_DigitalResource())->configFor(static::getBaseName()); } + public function getName() { + return static::getBaseName(); + } public function __construct($attribs) { $this->updateAttributes($attribs); diff --git a/library/digital_resources/Assimil/Config.php b/library/digital_resources/Assimil/Config.php index 2f5d2441eae..62d73a0f2c4 100644 --- a/library/digital_resources/Assimil/Config.php +++ b/library/digital_resources/Assimil/Config.php @@ -22,16 +22,19 @@ class Assimil_Config extends Class_DigitalResource_Config { public function __construct($digital_resource) { $this - ->updateAttributes(['Name' => 'ASSIMIL']) - ->updateAttributes(['SsoAction' => 'assimil', - 'DocTypeLabel' => $this->_('ASSIMIL e-méthode'), - 'Batch' => new Assimil_Batch(), - 'AdminVars' => [$this->getName() => Class_AdminVar_Meta::newOnOff($this->_('Activer ou désactiver la ressource numérique Assimil'))->bePrivate()], - 'ModuleMenu' => new Assimil_ModuleMenu(), - 'PermissionLabel' => $this->_('Bibliothèque numérique: accéder à ASSIMIL'), - 'DigitalResource' => $digital_resource]); + ->updateAttributes($this->getConfig($digital_resource)); } + public function getConfig($digital_resource) { + return ['SsoAction' => 'assimil', + 'DocTypeLabel' => $this->_('ASSIMIL e-méthode'), + 'Batch' => new Assimil_Batch(), + 'AdminVars' => [$this->getName() => Class_AdminVar_Meta::newOnOff($this->_('Activer ou désactiver la ressource numérique Assimil'))->bePrivate()], + 'ModuleMenu' => 'Assimil_ModuleMenu', + 'PermissionLabel' => $this->_('Bibliothèque numérique: accéder à ASSIMIL'), + 'MenuLabel' => $this->_('Lien vers Assimil'), + 'DigitalResource' => $digital_resource]; + } public static function getBaseName() { return basename(__DIR__); diff --git a/library/digital_resources/Assimil/ModuleMenu.php b/library/digital_resources/Assimil/ModuleMenu.php index c9f91304df4..af11e942b13 100644 --- a/library/digital_resources/Assimil/ModuleMenu.php +++ b/library/digital_resources/Assimil/ModuleMenu.php @@ -22,12 +22,13 @@ class Assimil_ModuleMenu extends Class_Systeme_ModulesMenu_SSOAbstract { /** @var string */ protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES; + protected $_type_module; - /** @var string */ - protected $_type_module = 'ASSIMIL'; - - /** @var string */ - protected $_libelle = 'Lien vers ASSIMIL'; + public function __construct() { + $config = Assimil_Config::getInstance(); + $this->_type_module=$config->getName(); + $this->_libelle = $config->getMenuLabel(); + } public function urlForUser($user) { diff --git a/library/digital_resources/Assimil/Service.php b/library/digital_resources/Assimil/Service.php index e31e38496ff..8a9844c8eb2 100644 --- a/library/digital_resources/Assimil/Service.php +++ b/library/digital_resources/Assimil/Service.php @@ -22,7 +22,7 @@ class Assimil_Service extends Class_WebService_BibNumerique_Abstract { use Trait_Timesource; - const CATEGORY_LABEL = 'ASSIMIL'; + const CATEGORY_LABEL = 'Assimil'; const XML_URL = 'http://fr.assimil.com/extraits/catalogueXML/catalogue_XML_Assimil.xml'; diff --git a/library/digital_resources/Assimil/tests/AssimilTest.php b/library/digital_resources/Assimil/tests/AssimilTest.php index f3bb5ebc66d..7620d9e03f2 100644 --- a/library/digital_resources/Assimil/tests/AssimilTest.php +++ b/library/digital_resources/Assimil/tests/AssimilTest.php @@ -20,6 +20,17 @@ */ +class ActivateAssimil { + + public static function activate() { + Class_AdminVar::newInstanceWithId('Assimil_Assimil', ['valeur' => '1']); + } + + public static function deactivate() { + Class_AdminVar::newInstanceWithId('Assimil_Assimil', ['valeur' => '']); + } +} + class AssimilConfigTest extends ModelTestCase { protected @@ -32,6 +43,7 @@ class AssimilConfigTest extends ModelTestCase { } + /** @test */ public function docTypeShouldBeAssimil() { $this->assertEquals('Assimil', $this->_config->getDocType()); @@ -40,14 +52,14 @@ class AssimilConfigTest extends ModelTestCase { /** @test */ public function withAdminVarOffShouldBeDisabled() { - $this->fixture('Class_AdminVar', ['id' => 'Assimil_ASSIMIL', 'valeur' => '']); + $this->fixture('Class_AdminVar', ['id' => 'Assimil_Assimil', 'valeur' => '']); $this->assertFalse($this->_config->isEnabled()); } /** @test */ public function withAdminVarOnShouldBeEnabled() { - $this->fixture('Class_AdminVar', ['id' => 'Assimil_ASSIMIL', 'valeur' => '1']); + $this->fixture('Class_AdminVar', ['id' => 'Assimil_Assimil', 'valeur' => '1']); $this->assertTrue($this->_config->isEnabled()); } } @@ -60,7 +72,7 @@ class AssimilActivatedAdminTest extends Admin_AbstractControllerTestCase { public function setUp() { parent::setUp(); - RessourcesNumeriquesFixtures::activateAssimil(); + ActivateAssimil::activate(); $bib = $this->fixture('Class_Bib', ['id' => 2, 'libelle' => 'Tombouctou']); @@ -92,7 +104,7 @@ class AssimilActivatedAdminTest extends Admin_AbstractControllerTestCase { /** @test */ public function userGroupPermissionsShouldContainsAssimil() { $this->dispatch('admin/usergroup/edit/id/1', true); - $this->assertXPath('//label[contains(text(), "accéder à ASSIMIL")]/input[@name="permissions_access[]"][@value="ASSIMIL"]'); + $this->assertXPath('//label[contains(text(), "accéder à ASSIMIL")]/input[@name="permissions_access[]"][@value="Assimil"]'); } @@ -100,20 +112,20 @@ class AssimilActivatedAdminTest extends Admin_AbstractControllerTestCase { public function userGroupPermissionsShouldContainsAssimilChecked() { $this->fixture('Class_Permission', ['id' => 1, - 'code' => 'ASSIMIL']); + 'code' => 'Assimil']); Class_UserGroup::find(1)->setPermissions([1]); $this->dispatch('admin/usergroup/edit/id/1', true); - $this->assertXPath('//label[contains(text(), "accéder à ASSIMIL")]/input[@name="permissions_access[]"][@value="ASSIMIL"][@checked]'); + $this->assertXPath('//label[contains(text(), "accéder à ASSIMIL")]/input[@name="permissions_access[]"][@value="Assimil"][@checked]'); } /** @test */ public function userGroupPostShouldSaveUserGroup() { $this->postDispatch('admin/usergroup/edit/id/1', - ['permissions_access[]' => 'ASSIMIL', + ['permissions_access[]' => 'Assimil', 'libelle' => 'Group Assimil']); $this->assertNotEmpty(Class_UserGroup::find(1)->getPermissions()); - $this->assertEquals('ASSIMIL', Class_UserGroup::find(1)->getPermissions()[0]->getCode()); + $this->assertEquals('Assimil', Class_UserGroup::find(1)->getPermissions()[0]->getCode()); } @@ -121,13 +133,50 @@ class AssimilActivatedAdminTest extends Admin_AbstractControllerTestCase { /** @test */ public function profilAvailableMenusShouldContainsAssimil() { $this->dispatch('admin/profil/menusmaj/id_profil/5/id_menu/H/mode/edit', true); - $this->assertXPathContentContains('//option[@value="ASSIMIL"]', - 'Lien vers ', + $this->assertXPathContentContains('//option[@value="Assimil"]', + 'Lien vers Assimil', $this->_response->getBody()); } } +class AssimilOpacIndexControllerWithMenuTest extends AbstractControllerTestCase { + public function setUp() { + parent::setUp(); + ActivateAssimil::activate(); + $cfg_menus = ['H' => ['libelle' => 'Menu horizontal', + 'picto' => 'vide.gif', + 'menus' => [['type_menu' => 'MENU', + 'libelle' => 'Pratique', + 'picto' => 'bookmark.png', + 'preferences' => [], + 'sous_menus' => [['type_menu' => 'ACCUEIL', + 'libelle' => 'Accueil', + 'picto' => 'vide.gif', + 'preferences' => [], + 'sous_menus' => ''], + ['type_menu' => 'Assimil', + 'libelle' => 'Lien vers Assimil', + 'preferences' => [], + 'picto' => 'vide.gif'] ]]]]]; + + $profil_adulte = $this->fixture('Class_Profil', ['id' => 22, 'rewrite_url' => 'adulte']) + ->setBrowser('opac') + ->setLibelle('Profil Adulte') + ->setCfgMenus($cfg_menus); + + Class_Profil::setCurrentProfil($profil_adulte); + + $this->dispatch('/'); + } + + /** @test */ + public function linkToAssimilShouldBePresent() { + $this->assertXPathContentContains('//ul//li//a[contains(@href, "/modules/assimil")]', + 'Lien vers Assimil',$this->_response->getBody()); + } + +} abstract class AssimilServiceTestCase extends ModelTestCase { protected @@ -137,7 +186,7 @@ abstract class AssimilServiceTestCase extends ModelTestCase { public function setUp() { parent::setUp(); - RessourcesNumeriquesFixtures::activateAssimil(); + ActivateAssimil::activate(); $catalogue_xml = file_get_contents(__DIR__. '/assimil.xml'); @@ -165,7 +214,7 @@ class AssimilServiceHarvestTest extends AssimilServiceTestCase { /** @test */ public function nameShouldAssimil() { - $this->assertEquals('ASSIMIL', $this->_service->getName()); + $this->assertEquals('Assimil', $this->_service->getName()); } @@ -213,7 +262,7 @@ class AssimilServiceHarvestTest extends AssimilServiceTestCase { /** @test */ public function albumEditeurShouldContainsAssimil() { - $this->assertEquals('ASSIMIL', $this->_e_course->getEditors()[0]); + $this->assertEquals('Assimil', $this->_e_course->getEditors()[0]); } @@ -414,7 +463,7 @@ abstract class AssimilModulesControllerAssimilTestCase extends AbstractControlle public function setUp() { parent::setUp(); - RessourcesNumeriquesFixtures::activateAssimil(); + ActivateAssimil::activate(); $right = Class_UserGroup::RIGHT_ACCESS_ASSIMIL; diff --git a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php index 89fc7c63abe..4e59ddcf81b 100644 --- a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php +++ b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php @@ -51,7 +51,6 @@ abstract class ProfilOptionsControllerWithProfilAdulteTestCase extends AbstractC function setUpProfilAdulte() { - RessourcesNumeriquesFixtures::activateAssimil(); $cfg_menus = ['H' => ['libelle' => 'Menu horizontal', 'picto' => 'vide.gif', @@ -371,11 +370,6 @@ class ProfilOptionsControllerProfilAdulteWithCacheTest extends ProfilOptionsCont } - /** @test */ - public function linkToAssimilShouldBePresent() { - $this->assertXPathContentContains('//ul//li//a[contains(@href, "/modules/assimil")]', - 'Lien vers Assimil',$this->_response->getBody()); - } } diff --git a/tests/fixtures/RessourcesNumeriquesFixtures.php b/tests/fixtures/RessourcesNumeriquesFixtures.php index bf105c46817..91ac48fac8c 100644 --- a/tests/fixtures/RessourcesNumeriquesFixtures.php +++ b/tests/fixtures/RessourcesNumeriquesFixtures.php @@ -40,7 +40,6 @@ class RessourcesNumeriquesFixtures { self::deactivateOrthodidacte(); self::deactivateLeSocial(); self::deactivateCiteDeLaMusique(); - self::deactivateAssimil(); } @@ -65,7 +64,6 @@ class RessourcesNumeriquesFixtures { self::activateOrthodidacte(); self::activateLeSocial(); self::activateCiteDeLaMusique(); - self::activateAssimil(); } @@ -324,13 +322,4 @@ class RessourcesNumeriquesFixtures { Class_AdminVar::newInstanceWithId('CITEDELAMUSIQUE_SETS', ['valeur' => '']); } - - public static function activateAssimil() { - Class_AdminVar::newInstanceWithId('Assimil_ASSIMIL', ['valeur' => '1']); - } - - - public static function deactivateAssimil() { - Class_AdminVar::newInstanceWithId('Assimil_ASSIMIL', ['valeur' => '']); - } } -- GitLab