diff -r 02f113d43f18 -r 52169c718513 server/src/tests/Controllers/DiscourseControllerTest.php --- a/server/src/tests/Controllers/DiscourseControllerTest.php Thu Oct 20 15:09:31 2016 +0200 +++ b/server/src/tests/Controllers/DiscourseControllerTest.php Thu Oct 20 17:27:36 2016 +0200 @@ -2,24 +2,28 @@ use Mockery as m; -use EasyRdf\Resource; -use EasyRdf\Literal; - /** * */ class DiscourseControllerTest extends TestCase { - private $sparqlClient; + const ES_QUERY = [ + 'index' => 'corpus', + 'body' => [ + "size" => 0, + "query" => [ "match_all" => [] ], + "aggs" => [ + "discourses" => [ + "terms" => [ "field" => "discourse_types", "order" => [ "_count" => "desc" ], "size" => 0 ] + ] + ] + ] + ]; public function setUp() { parent::setup(); - // create a mock of the post repository interface and inject it into the - // IoC container - $this->sparqlClient = m::mock('CorpusParole\Libraries\Sparql\SparqlClient'); - $this->app->instance('CorpusParole\Libraries\Sparql\SparqlClient', $this->sparqlClient); } public function tearDown() { @@ -27,39 +31,79 @@ parent::tearDown(); } - public function testIndexQuery() { - - $query = preg_replace('/\s+/', ' ', "SELECT (?o AS ?res) (COUNT(?s) AS ?count) WHERE { - ?s a . - ?s ?o. - FILTER(uri(?o) in (<".implode('>,<', array_keys(config('corpusparole.corpus_discourse_type'))).">)) - } - GROUP BY ?o - ORDER BY DESC(?count)"); - - $this->sparqlClient - ->shouldReceive('query') - ->with($query) - ->once() - ->andReturn(new \ArrayIterator([])); - $this->get('/api/v1/stats/discourses/'); - } - public function testIndex() { - $this->sparqlClient - ->shouldReceive('query') - ->once() - ->andReturn(new \ArrayIterator([ - (object)['res'=>new Resource('http://ark.bnf.fr/ark:/12148/cb12083158d'), 'count' => Literal::create(44)], - (object)['res'=>new Resource('http://ark.bnf.fr/ark:/12148/cb119783362'), 'count' => Literal::create(33)], - (object)['res'=>new Resource('http://ark.bnf.fr/ark:/12148/cb13319048g'), 'count' => Literal::create(22)], - ])); + Es::shouldReceive('search') + ->once() + ->with(self::ES_QUERY) + ->andReturn(json_decode('{ + "took" : 116, + "timed_out" : false, + "_shards" : { + "total" : 1, + "successful" : 1, + "failed" : 0 + }, + "hits" : { + "total" : 3373, + "max_score" : 0.0, + "hits" : [ ] + }, + "aggregations" : { + "discourses" : { + "doc_count_error_upper_bound" : 0, + "sum_other_doc_count" : 0, + "buckets" : [ { + "key" : "http://ark.bnf.fr/ark:/12148/cb12083158d", + "doc_count" : 44 + }, { + "key" : "http://ark.bnf.fr/ark:/12148/cb119783362", + "doc_count" : 33 + }, { + "key" : "http://ark.bnf.fr/ark:/12148/cb13319048g", + "doc_count" : 22 + } ] + } + } +}', true)); + $this->get('/api/v1/stats/discourses/')->assertTrue($this->response->isOk(), $this->response->content()); + $this->seeJsonEquals(["discourses" => [ "http://ark.bnf.fr/ark:/12148/cb12083158d" => ["label" => "argumentation", "count" => 44], "http://ark.bnf.fr/ark:/12148/cb119783362" => ["label" => "bavardage", "count" => 33], "http://ark.bnf.fr/ark:/12148/cb13319048g" => ["label" => "chansons", "count" => 22], ]]); + + } + + public function testIndexQuery() { + Es::shouldReceive('search') + ->once() + ->with(self::ES_QUERY) + ->andReturn(json_decode('{ + "took" : 116, + "timed_out" : false, + "_shards" : { + "total" : 1, + "successful" : 1, + "failed" : 0 + }, + "hits" : { + "total" : 3373, + "max_score" : 0.0, + "hits" : [ ] + }, + "aggregations" : { + "discourses" : { + "doc_count_error_upper_bound" : 0, + "sum_other_doc_count" : 0, + "buckets" : [ ] + } + } +}', true)); + $this->get('/api/v1/stats/discourses/')->assertTrue($this->response->isOk(), $this->response->content()); + $this->seeJsonEquals(["discourses" => [ + ]]); } }