diff --git a/lib/Alchemy/Phrasea/SearchEngine/SearchEngineResult.php b/lib/Alchemy/Phrasea/SearchEngine/SearchEngineResult.php index 30c3a13adb..c7503d3f88 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/SearchEngineResult.php +++ b/lib/Alchemy/Phrasea/SearchEngine/SearchEngineResult.php @@ -94,7 +94,7 @@ class SearchEngineResult */ public function getCurrentPage($amountPerPage) { - return ceil($this->offsetStart / $amountPerPage); + return max(1, ceil(($this->offsetStart + 1) / $amountPerPage)); } /** diff --git a/tests/Alchemy/Tests/Phrasea/SearchEngine/SearchEngineResultTest.php b/tests/Alchemy/Tests/Phrasea/SearchEngine/SearchEngineResultTest.php index 684386e0e9..582b5d5f4e 100644 --- a/tests/Alchemy/Tests/Phrasea/SearchEngine/SearchEngineResultTest.php +++ b/tests/Alchemy/Tests/Phrasea/SearchEngine/SearchEngineResultTest.php @@ -19,7 +19,7 @@ class SearchEngineResultTest extends \PhraseanetPHPUnitAbstract $query = 'Gotainer'; $duration = 1 / 3; - $offsetStart = 24; + $offsetStart = 23; $available = 25; $total = 10000; $error = 'this is an error message'; @@ -49,4 +49,32 @@ class SearchEngineResultTest extends \PhraseanetPHPUnitAbstract $this->assertEquals($available, $result->getAvailable()); } + public function testWithOffsetStartAtZero() + { + $results = new ArrayCollection(array( + self::$DI['record_24'] + )); + + $query = 'Gotainer'; + $duration = 1 / 3; + $offsetStart = 0; + $available = 25; + $total = 10000; + $error = 'this is an error message'; + $warning = 'this is a warning message'; + $suggestions = new ArrayCollection(array( + new SearchEngineSuggestion($query, 'Richard', 22) + )); + $propositions = new ArrayCollection(); + $indexes = 'new-index'; + + $result = new SearchEngineResult($results, $query, $duration, + $offsetStart, $available, $total, $error, $warning, + $suggestions, $propositions, $indexes); + + $this->assertEquals(1, $result->getCurrentPage(10)); + $this->assertEquals(1, $result->getCurrentPage(25)); + $this->assertEquals(1, $result->getCurrentPage(40)); + } + }