SongkickServiceTest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 90
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 90
rs 10
c 0
b 0
f 0
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A returnNullOnNoArtistFoundByNameTest() 0 12 1
A returnArtistIdByNameTest() 0 12 1
B artistNameRequestResponseMock() 0 32 1
A artistNameRequestEmptyResponseMock() 0 9 1
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: thiago
5
 * Date: 07/04/18
6
 * Time: 19:21
7
 */
8
9
namespace MyWonderland\Test\Service;
10
11
use MyWonderland\Service\RequestService;
12
use MyWonderland\Service\SongkickService;
13
14
class SongkickServiceTest extends \PHPUnit\Framework\TestCase
15
{
16
    /**
17
     * @test
18
     */
19
    public function returnArtistIdByNameTest()
20
    {
21
        $requestServiceMock = $this->getMockBuilder(RequestService::class)
22
            ->setMethods(['requestContent'])
23
            ->getMock();
24
        $requestServiceMock->expects($this->once())
25
            ->method('requestContent')
26
            ->willReturn($this->artistNameRequestResponseMock());
27
28
        $songkickService = new SongkickService($requestServiceMock);
29
30
        $this->assertEquals(417271, $songkickService->getArtistIdByName('a-key', 'an-artist'));
31
    }
32
33
34
    /**
35
     * @test
36
     */
37
    public function returnNullOnNoArtistFoundByNameTest()
38
    {
39
        $requestServiceMock = $this->getMockBuilder(RequestService::class)
40
            ->setMethods(['requestContent'])
41
            ->getMock();
42
        $requestServiceMock->expects($this->once())
43
            ->method('requestContent')
44
            ->willReturn($this->artistNameRequestEmptyResponseMock());
45
46
        $songkickService = new SongkickService($requestServiceMock);
47
48
        $this->assertEquals(null, $songkickService->getArtistIdByName('a-key', 'an-artist'));
49
    }
50
51
52
    /**
53
     * @return array
54
     */
55
    private function artistNameRequestEmptyResponseMock()
56
    {
57
        return [
58
            "resultsPage" => [
59
                "status" => 'ok',
60
                "results" => [],
61
                "perPage" => 1,
62
                "page" => 1,
63
                "totalEntries" => 0,
64
            ]
65
        ];
66
    }
67
68
69
    /**
70
     * @return array
71
     */
72
    private function artistNameRequestResponseMock()
73
    {
74
        return [
75
            "resultsPage" => [
76
77
                "status" => "ok",
78
                "results" => [
79
                    "artist" => [
80
                        0 => [
81
                            "identifier" => [
82
                                0 => [
83
                                    "eventsHref" => "http://api.songkick.com/api/3.0/artists/mbid:b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d/calendar.json",
84
                                    "setlistsHref" => "http://api.songkick.com/api/3.0/artists/mbid:b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d/setlists.json",
85
                                    "mbid" => "b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d",
86
                                    "href" => "http://api.songkick.com/api/3.0/artists/mbid:b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d.json"
87
                                ]
88
89
                            ],
90
91
                            "onTourUntil" => null,
92
                            "displayName" => "The Beatles",
93
                            "uri" => "http://www.songkick.com/artists/417271-beatles?utm_source=10918&utm_medium=partner",
94
                            "id" => 417271
95
                        ]
96
97
                    ]
98
99
                ],
100
101
                "perPage" => 1,
102
                "page" => 1,
103
                "totalEntries" => 196
104
            ]
105
106
        ];
107
    }
108
109
}