Completed
Push — master ( 943d61...bccf98 )
by Guillaume
06:26
created

RunnerTest::setUp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace Hogosha\Monitor\Client;
4
5
use GuzzleHttp\HandlerStack;
6
use GuzzleHttp\Handler\MockHandler;
7
use GuzzleHttp\Psr7\Response;
8
use Hogosha\Monitor\Configuration\ConfigurationLoader;
9
use Hogosha\Monitor\Model\Result;
10
use Hogosha\Monitor\Model\ResultCollection;
11
use Hogosha\Monitor\Model\UrlInfo;
12
use Hogosha\Monitor\Model\UrlProvider;
13
use Hogosha\Monitor\Runner\Runner;
14
use Webmozart\Console\IO\BufferedIO;
15
16
/**
17
 * @author Guillaume Cavana <[email protected]>
18
 */
19
class RunnerTest extends \PHPUnit_Framework_TestCase
20
{
21
    /**
22
     * @var BufferedIO
23
     */
24
    private $io;
25
26
    protected function setUp()
27
    {
28
        $this->io = new BufferedIO();
29
    }
30
31
    /**
32
     * testRunner.
33
     */
34
    public function testRunner()
35
    {
36
        $urlProvider = new UrlProvider([
37
            'urls' => [
38
                'google' => [
39
                    'url' => 'https://www.google.fr',
40
                    'method' => 'GET',
41
                    'headers' => [],
42
                    'timeout' => 1,
43
                    'status_code' => 200,
44
                ],
45
            ],
46
        ]);
47
48
        $client = GuzzleClient::createClient($this->io, ['handler' => $this->mockClient()]);
49
        $runner = new Runner($urlProvider, $client);
50
        $resultCollection = $runner->run();
51
52
        $this->assertCount(1, $urlProvider->getUrls());
53
        $this->assertInstanceOf(UrlInfo::class, $urlProvider->getUrls()['google']);
54
        $this->assertInstanceOf(ResultCollection::class, $resultCollection);
55
        $this->assertInstanceOf(Result::class, $resultCollection[0]);
56
        $this->assertEquals((new Result($this->createUrlInfo(), 200, 0)), $resultCollection[0]);
57
    }
58
59
    /**
60
     * mockClient.
61
     *
62
     * @return MockHandler
63
     */
64
    private function mockClient()
65
    {
66
        $mock = new MockHandler([
67
            new Response(200, [], 'test'),
68
        ]);
69
70
        return HandlerStack::create($mock);
71
    }
72
73
    private function createUrlInfo()
74
    {
75
        return new UrlInfo(
76
            'google',
77
            'https://www.google.fr',
78
            'GET',
79
            [],
80
            1,
81
            200,
82
            null,
83
            null
84
        );
85
    }
86
}
87