diff --git a/VERSIONS_HOTLINE/198520 b/VERSIONS_HOTLINE/198520 new file mode 100644 index 0000000000000000000000000000000000000000..2bbe49826b61765ad567bdefda905f8281e63340 --- /dev/null +++ b/VERSIONS_HOTLINE/198520 @@ -0,0 +1 @@ + - correctif #198520 : SIGB Nanook : Correction du mode Nanook unique. \ No newline at end of file diff --git a/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/IndexTest.php b/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/IndexTest.php index d33d17f1ca0964e9eeb660a439d14120ec55f0b2..c1f945cda65a3768cb2865cfde4d368a5e4efac1 100644 --- a/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/IndexTest.php +++ b/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/IndexTest.php @@ -20,10 +20,13 @@ */ -class Cosmo_IndexTest extends CosmoControllerTestCase { +class Cosmo_IndexTest extends CosmoControllerTestCase +{ - public function setUp() { + public function setUp() + { parent::setUp(); + Class_IntBib::setTimeSource(new TimeSourceForTest('2021-10-16')); $this->fixture(Class_IntBib::class, @@ -119,61 +122,71 @@ class Cosmo_IndexTest extends CosmoControllerTestCase { /** @test */ - public function indexShouldContainsH1Administration() { + public function indexShouldContainsH1Administration() + { $this->assertXPathContentContains('//h1', 'Administration'); } /** @test */ - public function shouldContainsCurrentBokehVersion() { + public function shouldContainsCurrentBokehVersion() + { $this->assertXPathContentContains('//p', 'Version : ' . BOKEH_RELEASE_NUMBER); } /** @test */ - public function uniqueNanookShouldBeDisplay() { + public function uniqueNanookShouldBeDisplay() + { $this->assertXPathContentContains('//p', 'Mode Nanook unique : Non'); } /** @test */ - public function shouldContainsAccesAdminSys() { + public function shouldContainsAccesAdminSys() + { $this->assertXPathContentContains('//p', 'Accès : Administrateur système'); } /** @test */ - public function shouldContainsLastIntegration() { + public function shouldContainsLastIntegration() + { $this->assertXPathContentContains('//p', 'Dernier traitement d\'intégration effectué le : 14 October 2021'); } /** @test */ - public function shouldContainsNoWaitingIntegrations() { + public function shouldContainsNoWaitingIntegrations() + { $this->assertXPathContentContains('//p', 'Tous les fichiers en attente ont été intégrés.'); } /** @test */ - public function shouldContains2NoticesSuccinctesAndOneWaiting() { + public function shouldContains2NoticesSuccinctesAndOneWaiting() + { $this->assertXPathContentContains('//p', 'Il reste 2 notices succinctes dont 1 en attente de traitement ( Class_CosmoVar Z3950_retry_level = 3 ) .'); } /** @test */ - public function shouldContainsNoLateSendFile() { + public function shouldContainsNoLateSendFile() + { $this->assertXPathContentContains('//p', 'Toutes les bibliothèques à alerter sont à jour de leurs envois de fichiers'); } /** @test */ - public function shouldContainsTwdHistoricalIntegrationsDataForTenKiloBytes() { + public function shouldContainsTwdHistoricalIntegrationsDataForTenKiloBytes() + { $this->assertXPathContentContains('//p', 'Il y a 2 paniers conservés dans /cosmo/integration/ pour une taille de : 10 ko'); } /** @test */ - public function shouldContainsTwoHistoricalIntegrationsLogsFilesForOneHundredKiloBytes() { + public function shouldContainsTwoHistoricalIntegrationsLogsFilesForOneHundredKiloBytes() + { $this->assertXPathContentContains('//p', 'Il y a 2 fichiers de logs conservés dans /cosmo/log/ pour une taille de : 100 ko'); } } @@ -181,9 +194,11 @@ class Cosmo_IndexTest extends CosmoControllerTestCase { -class CosmoIndexWithDangerTest extends CosmoControllerTestCase { +class CosmoIndexWithDangerTest extends CosmoControllerTestCase +{ - public function setUp() { + public function setUp() + { parent::setUp(); Class_CosmoVar::setValueOf('integration_frequence', 2); @@ -224,31 +239,36 @@ class CosmoIndexWithDangerTest extends CosmoControllerTestCase { /** @test */ - public function shouldContainsWaitingIntegrations() { + public function shouldContainsWaitingIntegrations() + { $this->assertXPathContentContains('//p', 'Il reste 1 fichier(s) en attente d\'intégration.'); } /** @test */ - public function shouldContainsIntegrationProcessDidntRunSince() { + public function shouldContainsIntegrationProcessDidntRunSince() + { $this->assertXPathContentContains('//p[@class="error"]', 'Les traitements d\'intégration n\'ont pas été effectués depuis 13 jour(s)'); } /** @test */ - public function lateLibraryLastInDay() { + public function lateLibraryLastInDay() + { $this->assertXPathContentContains('//p', 'Retard 13 jour(s)'); } /** @test */ - public function shouldContainsNoLogPathErrorMessage() { + public function shouldContainsNoLogPathErrorMessage() + { $this->assertXPathContentContains('//p[@class="error"]', 'Vous devez définir un chemin de dossier pour les fichiers de log'); } /** @test */ - public function shouldContainsNoIntegrationPathErrorMessage() { + public function shouldContainsNoIntegrationPathErrorMessage() + { $this->assertXPathContentContains('//p[@class="error"]', 'La variable integration_path n\'est pas définie.'); } } @@ -256,9 +276,11 @@ class CosmoIndexWithDangerTest extends CosmoControllerTestCase { -class CosmoIndexWithLockedDatabaseTest extends CosmoControllerTestCase { +class CosmoIndexWithLockedDatabaseTest extends CosmoControllerTestCase +{ - public function setUp() { + public function setUp() + { parent::setUp(); Class_CosmoVar::setValueOf('clef_traitements', 1); @@ -268,7 +290,8 @@ class CosmoIndexWithLockedDatabaseTest extends CosmoControllerTestCase { /** @test */ - public function shouldContainsLockedDatabase() { + public function shouldContainsLockedDatabase() + { $this->assertXPathContentContains('//p[@class="error"]', 'La base est bloquée à la phase de traitement : notice'); } } @@ -276,30 +299,54 @@ class CosmoIndexWithLockedDatabaseTest extends CosmoControllerTestCase { -class CosmoIndexWithSingleNanookYesTest extends CosmoControllerTestCase { - - protected $_storm_default_to_volatile = true; +class CosmoIndexWithSingleNanookYesTest extends CosmoControllerTestCase +{ - - public function setUp() { + public function setUp() + { parent::setUp(); $this->fixture(Class_IntBib::class, ['id' => 32, + 'nom_court' => 'BEZU', 'sigb' => 13, - 'url_server' => 'https://monsuper-server-nanook.fr']); + 'comm_sigb' => Class_IntBib::COM_NANOOK, + 'comm_params' => ['url_serveur' => 'http://monsuper-server-nanook.fr']]); $this->fixture(Class_IntBib::class, ['id' => 33, + 'nom_court' => 'CHATEAU', + 'sigb' => 13, + 'comm_sigb' => Class_IntBib::COM_NANOOK, + 'comm_params' => ['url_serveur' => 'monsuper-server-nanook.fr']]); + + $this->fixture(Class_IntBib::class, + ['id' => 34, + 'nom_court' => 'ETREPAGNY', + 'sigb' => 13, + 'comm_sigb' => Class_IntBib::COM_NANOOK, + 'comm_params' => ['url_serveur' => 'http://monsuper-server-nanook.fr/']]); + + $this->fixture(Class_IntBib::class, + ['id' => 36, + 'nom_court' => 'ELOI', 'sigb' => 13, - 'url_server' => 'https://monsuper-server-nanook.fr']); + 'comm_sigb' => Class_IntBib::COM_NANOOK, + 'comm_params' => ['url_serveur' => ' http://monsuper-server-nanook.fr/ ']]); + + $this->fixture(Class_IntBib::class, + ['id' => 37, + 'nom_court' => 'OAI', + 'sigb' => 0, + 'comm_sigb' => Class_IntBib::COM_NONE]); $this->dispatch('/cosmo/index'); } /** @test */ - public function uniqueNanookShouldBeYes() { + public function uniqueNanookShouldBeYes() + { $this->assertXPathContentContains('//p', 'Mode Nanook unique : Oui'); } } @@ -307,12 +354,11 @@ class CosmoIndexWithSingleNanookYesTest extends CosmoControllerTestCase { -class CosmoIndexWithSingleNanookNoTest extends CosmoControllerTestCase { - - protected $_storm_default_to_volatile = true; +class CosmoIndexWithSingleNanookNoTest extends CosmoControllerTestCase +{ - - public function setUp() { + public function setUp() + { parent::setUp(); $this->fixture(Class_IntBib::class, @@ -332,7 +378,7 @@ class CosmoIndexWithSingleNanookNoTest extends CosmoControllerTestCase { $this->fixture(Class_IntBib::class, ['id' => 34, 'nom_court' => 'ETREPAGNY', - 'sigb' => 12, + 'sigb' => Class_IntBib::SIGB_KOHA, 'comm_sigb' => Class_IntBib::COM_KOHA, 'comm_params' => ['url_serveur' => 'http://monsuper-server-nanook.fr']]); @@ -341,55 +387,68 @@ class CosmoIndexWithSingleNanookNoTest extends CosmoControllerTestCase { 'nom_court' => 'ELOI', 'sigb' => 13, 'comm_sigb' => Class_IntBib::COM_NANOOK, - 'comm_params' => ['url_serveur' => 'https://monsuper-server-nanook.fr']]); + 'comm_params' => ['url_serveur' => 'https://monsuper-server-nanook.fr/']]); $this->fixture(Class_IntBib::class, ['id' => 37, 'nom_court' => 'MICHA', 'sigb' => 13, 'comm_sigb' => Class_IntBib::COM_NANOOK, - 'comm_params' => ['url_serveur' => 'https://monsuper-server-nanook.fr']]); + 'comm_params' => ['url_serveur' => ' https://monsuper-server-nanook.fr ']]); + + $this->fixture(Class_IntBib::class, + ['id' => 38, + 'nom_court' => 'OAI', + 'sigb' => 0, + 'comm_sigb' => Class_IntBib::COM_NONE]); $this->dispatch('/cosmo/index'); } /** @test */ - public function uniqueNanookShouldBeNo() { + public function uniqueNanookShouldBeNo() + { $this->assertXPathContentContains('//p', 'Mode Nanook unique : Non'); } /** @test */ - public function messageEtrepagnyIsUsingKohaShouldBeDisplay() { + public function messageEtrepagnyIsUsingKohaShouldBeDisplay() + { $this->assertXPathContentContains('//p', 'L\'integration ETREPAGNY a pour SIGB : Koha .'); } /** @test */ - public function linkToETREPAGNYDashboardShouldBeDisplay() { + public function linkToETREPAGNYDashboardShouldBeDisplay() + { $this->assertXPath('//p/a[@href="/cosmo/integration/dashboard/id/34"]/i[@class="fa fa-bug"]'); } /** @test */ - public function messageBezuIsUsingUrlServerInHttpsShouldBeDisplay() { - $this->assertXPathContentContains('//p', 'L\'integration BEZU a pour url_server : https://monsuper-server-nanook.fr/ . Cette url_serveur est utilisée dans 2 autres intégrations'); + public function messageBezuIsUsingUrlServerInHttpsShouldBeDisplay() + { + $this->assertXPathContentContains('//p', 'L\'integration BEZU a pour url_server : https://monsuper-server-nanook.fr . Cette url_serveur est utilisée dans 2 autres intégrations'); } /** @test */ - public function messageChateauIsUsingUrlServerInHttpShouldBeDisplay() { - $this->assertXPathContentContains('//p', 'L\'integration CHATEAU a pour url_server : http://monsuper-server-nanook.fr/ .'); + public function messageChateauIsUsingUrlServerInHttpShouldBeDisplay() + { + $this->assertXPathContentContains('//p', 'L\'integration CHATEAU a pour url_server : http://monsuper-server-nanook.fr .'); } } -class CosmoIndexWithLatePatchLevelTest extends CosmoControllerTestCase { +class CosmoIndexWithLatePatchLevelTest extends CosmoControllerTestCase +{ - public function setUp() { + public function setUp() + { parent::setUp(); Class_CosmoVar::setValueOf('log_path', '/cosmo/log/'); @@ -401,7 +460,8 @@ class CosmoIndexWithLatePatchLevelTest extends CosmoControllerTestCase { /** @test */ - public function shouldContainsAnchorToRunPatchLevel() { + public function shouldContainsAnchorToRunPatchLevel() + { $this->assertXPathContentContains('//p[@class="error"]//a[@href="/cosmo/database-migration/migrate"]', 'mise à niveau de la base de données'); } } @@ -409,9 +469,11 @@ class CosmoIndexWithLatePatchLevelTest extends CosmoControllerTestCase { -class CosmoIndexWithAdminLoggedTest extends CosmoControllerTestCase { +class CosmoIndexWithAdminLoggedTest extends CosmoControllerTestCase +{ - public function setUp() { + public function setUp() + { parent::setUp(); $_SESSION['passe'] = 'admin_portail'; @@ -420,7 +482,8 @@ class CosmoIndexWithAdminLoggedTest extends CosmoControllerTestCase { /** @test */ - public function adminPortailShouldBeLogged() { + public function adminPortailShouldBeLogged() + { $this->assertXPathContentContains('//p', 'Accès : Administrateur du portail'); } } @@ -428,9 +491,11 @@ class CosmoIndexWithAdminLoggedTest extends CosmoControllerTestCase { -class CosmoIndexWithCatalogueurLoggedTest extends CosmoControllerTestCase { +class CosmoIndexWithCatalogueurLoggedTest extends CosmoControllerTestCase +{ - public function setUp() { + public function setUp() + { parent::setUp(); $_SESSION['passe'] = 'catalogueur'; @@ -439,7 +504,8 @@ class CosmoIndexWithCatalogueurLoggedTest extends CosmoControllerTestCase { /** @test */ - public function adminPortailShouldBeLogged() { + public function adminPortailShouldBeLogged() + { $this->assertXPathContentContains('//p', 'Accès : Catalogueur'); } } @@ -447,27 +513,32 @@ class CosmoIndexWithCatalogueurLoggedTest extends CosmoControllerTestCase { -class CosmoIndexIntBibSQLTest extends CosmoControllerTestCase { +class CosmoIndexIntBibSQLTest extends CosmoControllerTestCase +{ + protected array $_storm_scopes = ['IntBibLoader', 'NoticeSuccincteLoader']; - protected bool $_storm_mock_zend_adapter = true; - public function setUp() { + public function setUp() + { parent::setUp(); - Class_CosmoVar::set('Z3950_retry_level', 0); + + Class_CosmoVar::setValueOf('Z3950_retry_level', 0); $this->dispatch('/cosmo/index'); } /** @test */ - public function intBibLoaderShouldGenerateEcartAjoutGreaterThanZero() { + public function intBibLoaderShouldGenerateEcartAjoutGreaterThanZero() + { $this->assertSql('SELECT `int_bib`.* FROM `int_bib` WHERE (`int_bib`.`mail` != \'\' AND `int_bib`.`dernier_ajout` != \'0000-00-00\' AND `int_bib`.`ecart_ajouts` > \'0\') ORDER BY `int_bib`.`nom_court` ASC'); } /** @test */ - public function noticeSuccincteLoaderShouldGenerateZ3950LeserThanZero() { - $this->assertSql('SELECT `notices_succintes`.* FROM `notices_succintes` WHERE (`notices_succintes`.`z3950_retry` < 0)'); + public function noticeSuccincteLoaderShouldGenerateZ3950LeserThanZero() + { + $this->assertSql('SELECT COUNT(*) AS `numberof` FROM `notices_succintes` WHERE (`notices_succintes`.`z3950_retry` < 0)'); } } diff --git a/library/Class/IntBib/SingleSigb.php b/library/Class/IntBib/SingleSigb.php index fa6dd34d11aba53a692a14bdd6721262180dad92..9cc22a19e0fb00d903e4c0e121c65d99c177b544 100644 --- a/library/Class/IntBib/SingleSigb.php +++ b/library/Class/IntBib/SingleSigb.php @@ -20,12 +20,14 @@ */ -class Class_IntBib_SingleSigb { +class Class_IntBib_SingleSigb +{ protected array $_sigbs = []; protected ?string $_unique_url = null; - public function isSingle() : bool { + public function isSingle(): bool + { $this->_unique_url = null; $int_bibs = $this->_intBibs(); @@ -40,7 +42,29 @@ class Class_IntBib_SingleSigb { } - public function isSinglePatrons() : bool { + public function urlCountByNanook(): array + { + $rows = Class_IntBib::query() + ->select(['nom_court', 'comm_params', Storm_Query_Key::count()]) + ->eq('sigb', Class_IntBib::SIGB_NANOOK) + ->group('comm_params') + ->fetchAll(); + + $models = []; + foreach ($rows as $row) { + if ( ! ($url = $this->_url($this->_unserializeParams($row->getCommParams())))) + continue; + + $url_count = ($models [$url] ??= new Class_IntBib_UrlCount($row->getNomCourt())); + $url_count->addCount($row->getCountBy() ?? 1); + } + + return $models; + } + + + public function isSinglePatrons(): bool + { $aCollection = (new Storm_Model_Collection(Class_IntBib::findAll())) ->select(fn($model) => $model->hasPatronImport()); @@ -48,7 +72,8 @@ class Class_IntBib_SingleSigb { } - protected function _isSizeValid(array $int_bibs) : bool { + protected function _isSizeValid(array $int_bibs): bool + { if ( ! ($count_sigbs = count($this->_sigbs))) $count_sigbs = 1; @@ -56,7 +81,8 @@ class Class_IntBib_SingleSigb { } - protected function _isSigb(int $sigb) : bool { + protected function _isSigb(int $sigb): bool + { if ( ! $this->_sigbs) $this->_sigbs = [$sigb]; @@ -64,11 +90,12 @@ class Class_IntBib_SingleSigb { } - protected function _isSameUrl(array $comm_params) : bool { + protected function _isSameUrl(array $comm_params): bool + { foreach (array_filter(array_unique($comm_params)) as $params) { $params = $this->_unserializeParams($params); - if ( ! ($url = $params['url_serveur'] ?? '')) + if ( ! ($url = $this->_url($params))) continue; $this->_unique_url ??= $url; @@ -80,7 +107,8 @@ class Class_IntBib_SingleSigb { } - protected function _unserializeParams(string $params) : array { + protected function _unserializeParams(string $params): array + { try { return $params && ($results = unserialize($params)) ? $results @@ -91,7 +119,17 @@ class Class_IntBib_SingleSigb { } - protected function _intBibs() : array { + protected function _url(array $params): string + { + if ( ! ($url = trim(($params['url_serveur'] ?? ''), " \n\r\t\v\x00\/"))) + return ''; + + return Class_WebService_SIGB_AbstractRESTService::withProtocol($url); + } + + + protected function _intBibs(): array + { $rows = Class_IntBib::query() ->select(['sigb', 'comm_params']) ->not_eq('sigb', Class_IntBib::SIGB_NONE) diff --git a/library/Class/IntBib/UrlCount.php b/library/Class/IntBib/UrlCount.php new file mode 100644 index 0000000000000000000000000000000000000000..8f0a7286748071ff2c07fbafd67ec2d990c97c5b --- /dev/null +++ b/library/Class/IntBib/UrlCount.php @@ -0,0 +1,53 @@ +<?php +/** + * Copyright (c) 2012-2024, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Class_IntBib_UrlCount +{ + + protected string $_name = ''; + protected int $_count = 0; + + public function __construct(string $name) + { + $this->_name = $name; + } + + + public function addCount(int $count): self + { + $this->_count += $count; + + return $this; + } + + + public function getName(): string + { + return $this->_name; + } + + + public function getCount(): int + { + return $this->_count - 1; + } +} diff --git a/library/Class/WebService/SIGB/AbstractRESTService.php b/library/Class/WebService/SIGB/AbstractRESTService.php index d59be6c4c700574e496e59b22bec73e254dd8b05..243176e1cb2aec02376e0b12faf269ecba721ada 100644 --- a/library/Class/WebService/SIGB/AbstractRESTService.php +++ b/library/Class/WebService/SIGB/AbstractRESTService.php @@ -36,23 +36,26 @@ abstract class Class_WebService_SIGB_AbstractRESTService extends Class_WebServic } + public static function withProtocol(string $url): string + { + $protocol = ('http://' === substr($url, 0, 7) || 'https://' === substr($url, 0, 8)) + ? '' + : 'http://'; + + return $protocol . $url; + } + + /** * @param string $server_root * @return Class_WebService_SIGB_AbstractRESTService */ public function setServerRoot($server_root) { - $this->_server_root = $this->_withProtocol($server_root); + $this->_server_root = static::withProtocol($server_root); return $this; } - protected function _withProtocol($url) { - return ('http://' == substr($url, 0, 7) || 'https://' == substr($url, 0, 8) - ? '' : 'http://') - . $url; - } - - /** * @return string */ diff --git a/library/ZendAfi/View/Helper/Cosmo/Index.php b/library/ZendAfi/View/Helper/Cosmo/Index.php index f6d7a1ac7a6a6d1a5d4ae0b78098abdb0b6f8fae..3a1334117b9af098f3ea22efcd72ea8e1541c15a 100644 --- a/library/ZendAfi/View/Helper/Cosmo/Index.php +++ b/library/ZendAfi/View/Helper/Cosmo/Index.php @@ -140,7 +140,7 @@ class ZendAfi_View_Helper_Cosmo_Index extends ZendAfi_View_Helper_BaseHelper { protected function _addNonNanookIntegrations(array $html) : array { foreach (Class_IntBib::query() - ->not_eq('sigb', Class_IntBib::SIGB_NANOOK) + ->not_in('sigb', [Class_IntBib::SIGB_NANOOK, Class_IntBib::SIGB_NONE]) ->fetchAll() as $int_bib) $html [] = $this->view->tagError($this->_('L\'integration %s a pour SIGB : %s . %s', $int_bib->getNomCourt(), @@ -152,33 +152,17 @@ class ZendAfi_View_Helper_Cosmo_Index extends ZendAfi_View_Helper_BaseHelper { null, true), $this->view->renderIcon('class fa fa-bug')))); - $urls_server = []; - foreach (Class_IntBib::findAllBy(['sigb' => Class_IntBib::SIGB_NANOOK]) as $int_bib) { - $url_server = $int_bib->getUrlServer(); - - if (array_key_exists($url_server, $urls_server)) { - $urls_server [$url_server] += 1; - continue; - } - - $urls_server [$url_server] = 0; - $html [$url_server] = $this->_('L\'integration %s a pour url_server : %s .', - $int_bib->getNomCourt(), - $url_server); - } - - foreach ($html as $url_server => $notice) { - if ( ! $url_server) - continue; - - $count = $urls_server[$url_server] ?? 0; - $message = $html [$url_server]; + foreach ((new Class_IntBib_SingleNanook)->urlCountByNanook() as $url => $url_count) { + $message = $this->_('L\'integration %s a pour url_server : %s .', + $url_count->getName(), + $url); + $count = $url_count->getCount(); $others = $this->_plural($count, 'Cette url_serveur n\'est pas utilisée dans une autre intégration.', 'Cette url_serveur est utilisée dans %s seule autre intégration.', 'Cette url_serveur est utilisée dans %s autres intégrations.', $count); - $html [$url_server] = $this->view->tagWarning(implode(' ', [$message, $others])); + $html [$url] = $this->view->tagWarning(implode(' ', [$message, $others])); } return $html; diff --git a/tests/library/Class/IntBibTest.php b/tests/library/Class/IntBibTest.php index c29a02881378039bce94dbaa418cb730aecd22bb..ebe319f31dd258374696174b581c20ad361fa8dd 100644 --- a/tests/library/Class/IntBibTest.php +++ b/tests/library/Class/IntBibTest.php @@ -375,12 +375,12 @@ class IntBibSingleSigbTest extends ModelTestCase { ['id' => 78, 'sigb' => Class_IntBib::SIGB_ORPHEE, 'comm_sigb' => Class_IntBib::COM_ORPHEE, - 'comm_params' => 'a:1:{s:11:"url_serveur";s:53:"http://nanookws.afi-sa.net/afi_NanookWs/ilsdi/meylan/";}']); + 'comm_params' => 'a:1:{s:11:"url_serveur";s:52:"http://nanookws.afi-sa.net/afi_NanookWs/ilsdi/meylan";}']); $this->fixture(Class_IntBib::class, ['id' => 79, 'sigb' => Class_IntBib::SIGB_ORPHEE, 'comm_sigb' => Class_IntBib::COM_ORPHEE, - 'comm_params' => 'a:2:{s:11:"url_serveur";s:53:"http://nanookws.afi-sa.net/afi_NanookWs/ilsdi/meylan/";s:15:"provide_suggest";s:1:"1";}']); + 'comm_params' => 'a:2:{s:11:"url_serveur";s:48:" nanookws.afi-sa.net/afi_NanookWs/ilsdi/meylan/ ";s:15:"provide_suggest";s:1:"1";}']); $this->assertTrue(Class_IntBib::isSingleSigb()); }