server/src/tests/Controllers/DiscourseControllerTest.php
author ymh <ymh.work@gmail.com>
Wed, 09 Nov 2016 15:05:41 +0100
changeset 406 cf0f23803a53
parent 377 52169c718513
child 407 2dba812c7ef2
permissions -rw-r--r--
upgrade elasticsearch to 5.0, upgrade ember

<?php

use Mockery as m;

/**
 *
 */
class DiscourseControllerTest extends TestCase {

    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();

    }

    public function tearDown() {
        m::close();
        parent::tearDown();
    }

    public function testIndex() {

        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" => [
        ]]);
    }
}