ReactPHPRequestAdapterTest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 25
dl 0
loc 63
rs 10
c 0
b 0
f 0
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 3 1
A testGetSingleWebpage() 0 13 1
A testIncorrectUrlGivenAndExceptionThrown() 0 7 1
A testGetMultipleWebpages() 0 15 1
1
<?php
2
/**
3
 * File: ReactPHPRequestAdapterTest.php
4
 *
5
 * @author      Maciej Sławik <[email protected]>
6
 * Github:      https://github.com/maciejslawik
7
 */
8
9
namespace MSlwk\Otomoto\Middleware\Test\Integration\Webpage\Adapter\ReactPHP;
10
11
use MSlwk\Otomoto\Middleware\Webpage\Adapter\ReactPHP\ClientFactory;
12
use MSlwk\Otomoto\Middleware\Webpage\Adapter\ReactPHP\ReactPHPRequestAdapter;
13
use MSlwk\Otomoto\Middleware\Webpage\Data\UrlDTO;
14
use MSlwk\Otomoto\Middleware\Webpage\Data\UrlDTOArray;
15
use MSlwk\Otomoto\Middleware\Webpage\Data\WebpageDTOArray;
16
use MSlwk\Otomoto\Middleware\Webpage\Exception\GETHandlerException;
17
use PHPUnit\Framework\TestCase;
18
use React\EventLoop\Factory;
19
20
/**
21
 * Class ReactPHPRequestAdapterTest
22
 * @package MSlwk\Otomoto\Middleware\Test\Integration\Webpage\Adapter\ReactPHP
23
 */
24
class ReactPHPRequestAdapterTest extends TestCase
25
{
26
    /**
27
     * @var ReactPHPRequestAdapter
28
     */
29
    private $requestAdapter;
30
31
    /**
32
     * @return void
33
     */
34
    protected function setUp()
35
    {
36
        $this->requestAdapter = new ReactPHPRequestAdapter(Factory::create(), new ClientFactory());
37
    }
38
39
    /**
40
     * @test
41
     */
42
    public function testGetMultipleWebpages()
43
    {
44
        $url1 = new UrlDTO('https://www.google.com/');
45
        $url2 = new UrlDTO('https://www.bing.com/');
46
        $urls = new UrlDTOArray($url1, $url2);
47
48
        $webpages = $this->requestAdapter->getWebpages($urls);
49
50
        $expectedType = WebpageDTOArray::class;
51
        $expectedCount = 2;
52
53
        $this->assertInstanceOf($expectedType, $webpages);
54
        $this->assertEquals($expectedCount, $webpages->count());
55
        $this->assertContains('<html', $webpages->get(0)->getHtml());
56
        $this->assertContains('<html', $webpages->get(1)->getHtml());
57
    }
58
59
    /**
60
     * @test
61
     */
62
    public function testGetSingleWebpage()
63
    {
64
        $url1 = new UrlDTO('https://www.google.com/');
65
        $urls = new UrlDTOArray($url1);
66
67
        $webpages = $this->requestAdapter->getWebpages($urls);
68
69
        $expectedType = WebpageDTOArray::class;
70
        $expectedCount = 1;
71
72
        $this->assertInstanceOf($expectedType, $webpages);
73
        $this->assertEquals($expectedCount, $webpages->count());
74
        $this->assertContains('<html', $webpages->get(0)->getHtml());
75
    }
76
77
    /**
78
     * @test
79
     */
80
    public function testIncorrectUrlGivenAndExceptionThrown()
81
    {
82
        $url1 = new UrlDTO('wrong url');
83
        $urls = new UrlDTOArray($url1);
84
85
        $this->expectException(GETHandlerException::class);
86
        $this->requestAdapter->getWebpages($urls);
87
    }
88
}
89