Completed
Push — master ( 776a32...6c75fc )
by Guillermo A.
07:11
created

TestCase::getMockRepository()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
nc 1
nop 2
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace GuillermoandraeTest\Highrise;
4
5
use Guillermoandrae\Common\CollectionInterface;
6
use Guillermoandrae\Highrise\Http\GuzzleAdapter;
7
use Guillermoandrae\Highrise\Repositories\RepositoryInterface;
8
use Guillermoandrae\Repositories\RepositoryFactory;
9
use GuzzleHttp\Client;
10
use GuzzleHttp\Handler\MockHandler;
11
use GuzzleHttp\HandlerStack;
12
use GuzzleHttp\Psr7\Response;
13
use PHPUnit\Framework\TestCase as PHPUnitTestCase;
14
15
class TestCase extends PHPUnitTestCase
16
{
17
    protected function assertSameLastRequestUri(string $uri, RepositoryInterface $repository)
18
    {
19
        $this->assertSame($uri, $repository->getAdapter()->getLastRequest()->getUri()->getPath());
20
    }
21
22
    protected function getMockRepository(string $name, string $expectedBody)
23
    {
24
        $client = $this->getMockClient(200, [], $expectedBody);
25
        $adapter = $this->getAdapter($client);
26
        RepositoryFactory::setNamespace('Guillermoandrae\Highrise\Repositories');
27
        return RepositoryFactory::factory($name, $adapter);
28
    }
29
30
    protected function getAdapter(Client $client): GuzzleAdapter
31
    {
32
        $adapter = new GuzzleAdapter('test', '123456');
33
        $adapter->setClient($client);
34
        return $adapter;
35
    }
36
37
    protected function getMockClient($expectedHttpStatusCode, array $expectedHeaders = [], $expectedBody = ''): Client
38
    {
39
        $mock = new MockHandler([
40
            new Response($expectedHttpStatusCode, $expectedHeaders, $expectedBody)
41
        ]);
42
        $handler = HandlerStack::create($mock);
43
        return new Client(['handler' => $handler]);
44
    }
45
46
    protected function getMockModelsXml(string $name, $count = 2): string
47
    {
48
        $models = '<mock type="array">';
49
        for ($index = 0; $index < $count; $index++) {
50
            $models .= $this->getMockModelXml($name);
51
        }
52
        $models .= '</mock>';
53
        return $models;
54
    }
55
56
    protected function getMockModelXml(string $name): string
57
    {
58
        $path = sprintf('%s/data/%s.xml', dirname(__DIR__), $name);
59
        return file_get_contents($path);
60
    }
61
}
62