Fix #1535 : API does not display search engine suggestions correctly

This commit is contained in:
Romain Neutron
2013-10-10 18:00:09 +02:00
parent d296237154
commit eb6eb689e0
3 changed files with 50 additions and 3 deletions

View File

@@ -33,7 +33,7 @@ class SearchEngineSuggestion
{ {
$this->query = $query; $this->query = $query;
$this->suggestion = $suggestion; $this->suggestion = $suggestion;
$this->hits = (int) $hits; $this->hits = null !== $hits ? (int) $hits : null;
} }
/** /**
@@ -66,4 +66,16 @@ class SearchEngineSuggestion
return $this->hits; return $this->hits;
} }
/**
* Returns the suggestion as an array representation.
*
* @return array
*/
public function toArray()
{
return array(
'query' => $this->getSuggestion(),
'hits' => $this->getHits(),
);
}
} }

View File

@@ -10,6 +10,7 @@
*/ */
use Alchemy\Phrasea\SearchEngine\SearchEngineOptions; use Alchemy\Phrasea\SearchEngine\SearchEngineOptions;
use Alchemy\Phrasea\SearchEngine\SearchEngineSuggestion;
use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Border\File; use Alchemy\Phrasea\Border\File;
use Alchemy\Phrasea\Border\Attribute\Status; use Alchemy\Phrasea\Border\Attribute\Status;
@@ -916,7 +917,9 @@ class API_V1_adapter extends API_V1_Abstract
'warning' => $search_result->getWarning(), 'warning' => $search_result->getWarning(),
'query_time' => $search_result->getDuration(), 'query_time' => $search_result->getDuration(),
'search_indexes' => $search_result->getIndexes(), 'search_indexes' => $search_result->getIndexes(),
'suggestions' => $search_result->getSuggestions()->toArray(), 'suggestions' => array_map(function (SearchEngineSuggestion $suggestion) {
return $suggestion->toArray();
}, $search_result->getSuggestions()->toArray()),
'results' => array(), 'results' => array(),
'query' => $search_result->getQuery(), 'query' => $search_result->getQuery(),
); );

View File

@@ -12,7 +12,7 @@ class SearchEngineSuggestionTest extends \PhraseanetPHPUnitAbstract
public function testSetUp() public function testSetUp()
{ {
$words = 'plutôt cela'; $words = 'plutôt cela';
$query = 'Katy Query'; $query = 'Batman';
$hits = 42; $hits = 42;
$suggestion = new SearchEngineSuggestion($query, $words, $hits); $suggestion = new SearchEngineSuggestion($query, $words, $hits);
@@ -20,4 +20,36 @@ class SearchEngineSuggestionTest extends \PhraseanetPHPUnitAbstract
$this->assertEquals($query, $suggestion->getQuery()); $this->assertEquals($query, $suggestion->getQuery());
$this->assertEquals($words, $suggestion->getSuggestion()); $this->assertEquals($words, $suggestion->getSuggestion());
} }
public function testNullHits()
{
$words = 'plutôt cela';
$query = 'Batman';
$hits = null;
$suggestion = new SearchEngineSuggestion($query, $words, $hits);
$this->assertNull($suggestion->getHits());
$this->assertEquals($query, $suggestion->getQuery());
$this->assertEquals($words, $suggestion->getSuggestion());
}
public function testToArray()
{
$words = 'plutôt cela';
$query = 'Batman';
$hits = 35;
$suggestion = new SearchEngineSuggestion($query, $words, $hits);
$this->assertEquals(array('query' => $words, 'hits' => 35), $suggestion->toArray());
}
public function testToArrayWithNullValue()
{
$words = 'plutôt cela';
$query = 'Batman';
$hits = null;
$suggestion = new SearchEngineSuggestion($query, $words, $hits);
$this->assertEquals(array('query' => $words, 'hits' => null), $suggestion->toArray());
}
} }