server/src/tests/Controllers/GeonamesControllerTest.php
author ymh <ymh.work@gmail.com>
Thu, 20 Oct 2016 11:24:45 +0200
changeset 375 145561ff51ff
parent 306 3fccf43160a7
child 407 2dba812c7ef2
permissions -rw-r--r--
change datestats to use elasticsearch
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
304
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
use Mockery as m;
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
use CorpusParole\Services\GeonamesResolverException;
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
/**
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 *
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 */
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
class GeonamesControllerTest extends TestCase {
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
    private $geonamesResolver;
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
    public function setUp() {
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
        parent::setup();
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
        // create a mock of the post repository interface and inject it into the
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
        // IoC container
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
        $this->geonamesResolver = m::mock('CorpusParole\Services\GeonamesResolverInterface');
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
        $this->app->instance('CorpusParole\Services\GeonamesResolverInterface', $this->geonamesResolver);
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
    }
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    public function tearDown() {
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
        m::close();
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
        parent::tearDown();
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
    }
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
    public function testShow() {
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
        $this->geonamesResolver
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
            ->shouldReceive('getLabels')
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
            ->with(['2968801', '2988507', '6255148'])
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
            ->once()
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
            ->andReturn(['2968801' => 'Villedieu-les-Poêles', '2988507' => 'Paris', '6255148' => 'Europe']);
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
306
3fccf43160a7 Some more changes linked to the change of api organization + some jshint error cleaning
ymh <ymh.work@gmail.com>
parents: 304
diff changeset
    36
        $response = $this->get('/api/v1/resolvers/geonames/2968801,2988507,6255148')->
304
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
            seeJsonEquals(['geonamesids' => ['2968801' => 'Villedieu-les-Poêles', '2988507' => 'Paris', '6255148' => 'Europe']]);
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
    }
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
    public function testShowOne() {
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
        $this->geonamesResolver
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
            ->shouldReceive('getLabels')
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
            ->with(['2968801'])
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
            ->once()
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
            ->andReturn([
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
                '2968801' => 'Villedieu-les-Poêles'
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
            ]);
306
3fccf43160a7 Some more changes linked to the change of api organization + some jshint error cleaning
ymh <ymh.work@gmail.com>
parents: 304
diff changeset
    48
        $response = $this->get('/api/v1/resolvers/geonames/2968801')->
304
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
            seeJsonEquals(['geonamesids' => [
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
                '2968801' => 'Villedieu-les-Poêles'
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
            ]]);
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
    }
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
    public function testShowUnknown() {
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
        $this->geonamesResolver
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
            ->shouldReceive('getLabels')
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
            ->with(['12345'])
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
            ->once()
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
            ->andReturn([
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
                '12345' => null
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
            ]);
306
3fccf43160a7 Some more changes linked to the change of api organization + some jshint error cleaning
ymh <ymh.work@gmail.com>
parents: 304
diff changeset
    62
        $response = $this->get('/api/v1/resolvers/geonames/12345')->
304
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
            seeJsonEquals(['geonamesids' => [
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
                '12345' => null
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
            ]]);
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
    }
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
    public function testShowMalformed() {
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
        $this->geonamesResolver
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
            ->shouldReceive('getLabels')
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
            ->with(['abcdef','ghij'])
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
            ->once()
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
            ->andThrow('CorpusParole\Services\GeonamesResolverException', "GeonamesId not in correct format", 400);
306
3fccf43160a7 Some more changes linked to the change of api organization + some jshint error cleaning
ymh <ymh.work@gmail.com>
parents: 304
diff changeset
    74
        $response = $this->get('/api/v1/resolvers/geonames/abcdef,ghij');
304
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
        $this->assertResponseStatus(400);
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
    }
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
20071981ba2a add location and geonames resolvers and api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
}