diff --git a/local/languages/de.ini b/local/languages/de.ini index f38013bed2541dbf7d759bbbbe8cf26644a69810..0bb569160a7e6c1a88da8718ed0f2f3006f2927e 100644 --- a/local/languages/de.ini +++ b/local/languages/de.ini @@ -1705,7 +1705,7 @@ Tatar = Tatarisch Telugu = Telugu Tetum = Tetum Thai = Thailändisch -Tibetan = Tibetanisch +Tibetan = Tibetisch Tigre = Tigre Tigrinya = Tigrinya Timne = Temnisch diff --git a/module/finc/src/finc/View/Helper/Root/OpenUrl.php b/module/finc/src/finc/View/Helper/Root/OpenUrl.php index eac03d439f4ee7477b433977a172ee97a608245a..d5edf896fbd5859334298b3c6661329ecc830384 100644 --- a/module/finc/src/finc/View/Helper/Root/OpenUrl.php +++ b/module/finc/src/finc/View/Helper/Root/OpenUrl.php @@ -355,6 +355,8 @@ class OpenUrl extends \Zend\View\Helper\AbstractHelper */ protected function checkIfRulesApply() { + $this->recordResolvers = []; + if ($this->activeResolvers) { foreach ($this->activeResolvers as $resolver) { if (isset($this->openUrlRules[$resolver])) { @@ -565,4 +567,29 @@ class OpenUrl extends \Zend\View\Helper\AbstractHelper // no sufficient param found return false; } + + + /** + * @return string + */ + public function getArea() + { + return $this->area; + } + + /** + * @return mixed + */ + public function getActiveResolvers() + { + return $this->activeResolvers; + } + + /** + * @return mixed + */ + public function getRecordResolvers() + { + return $this->recordResolvers; + } } diff --git a/module/finc/tests/unit-tests/src/fincTest/View/Helper/Root/OpenUrlTest.php b/module/finc/tests/unit-tests/src/fincTest/View/Helper/Root/OpenUrlTest.php index 6866f6c4b789da801a6c8430e86b4645bddc2a66..3f9e9f696047c4331a24068d2bfecad23ebc8d7c 100644 --- a/module/finc/tests/unit-tests/src/fincTest/View/Helper/Root/OpenUrlTest.php +++ b/module/finc/tests/unit-tests/src/fincTest/View/Helper/Root/OpenUrlTest.php @@ -147,6 +147,52 @@ class OpenUrlTest extends \VuFindTest\View\Helper\Root\OpenUrlTest $this->assertTrue($instanceWithIssnAndZdbId->isActive()); } + public function testIsActiveIsIdempotent() + { + $this->rulesConfig['Ezb'] = [0 => ['include' => ["methods" => "getSourceID"]]]; + $instance = $this->getInstance(false, true, false); + + $instance->isActive(); + $activeResolversFirst = $instance->getActiveResolvers(); + $resolverCountFirst = $instance->getRecordResolvers(); + $areaFirst = $instance->getArea(); + + $instance->isActive(); + $activeResolversSecond = $instance->getActiveResolvers(); + $resolverCountSecond = $instance->getRecordResolvers(); + $areaSecond = $instance->getArea(); + + $this->assertEquals( + $activeResolversFirst, + $activeResolversSecond, + sprintf( + "Active resolvers must not change on recall, first %s then %s.", + implode(", ", $activeResolversFirst), + implode(", ", $activeResolversSecond) + ) + ); + + $this->assertEquals( + $resolverCountFirst, + $resolverCountSecond, + sprintf( + "Resolvers fetched by current rules must not change on recall, first %s then %s.", + implode(", ", $resolverCountFirst), + implode(", ", $resolverCountSecond) + ) + ); + + $this->assertEquals( + $areaFirst, + $areaSecond, + sprintf( + "Context for same record must not change on recall, first %s then %s.", + $areaFirst, + $areaSecond + ) + ); + } + /* Helper Functions */