The Gitlab instance will be restarted on Monday April 28th at 2AM. There will be a short interruption of service.

Skip to content
Snippets Groups Projects
Commit cc761250 authored by Robert Lange's avatar Robert Lange Committed by Dorian Merz
Browse files

refs #16473 [master] fix duplicate resolver links

* prevent duplicate array entries when calling 'isActive' of OpenUrl-helper twice
* initialise record resolvers as empty array
* add test for current resolvers, context and active
parent 35062be0
No related merge requests found
......@@ -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;
}
}
......@@ -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
*/
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment