StatsProviderTest   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 26
dl 0
loc 41
rs 10
c 0
b 0
f 0
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A testGetStats() 0 36 1
1
<?php
2
declare(strict_types=1);
3
4
/**
5
 * File:StatsProviderTest.php
6
 *
7
 * @author Maciej Sławik <[email protected]>
8
 * @copyright Copyright (C) 2018 Lizard Media (http://lizardmedia.pl)
9
 */
10
11
namespace MSlwk\Otomoto\App\Test\Unit\Stats;
12
13
use MSlwk\Otomoto\App\Manufacturer\Data\ManufacturerDTOInterface;
14
use MSlwk\Otomoto\App\Model\Data\ModelDTOInterface;
15
use MSlwk\Otomoto\App\Stats\Data\StatsDTOInterface;
16
use MSlwk\Otomoto\App\Stats\Filter\FilterArray;
17
use MSlwk\Otomoto\App\Stats\ModelOffersHtmlProvider;
18
use MSlwk\Otomoto\App\Stats\Scrapper\StatsHtmlScrapperInterface;
19
use MSlwk\Otomoto\App\Stats\StatsProvider;
20
use PHPUnit\Framework\MockObject\MockObject;
21
use PHPUnit\Framework\TestCase;
22
23
/**
24
 * Class StatsProviderTest
25
 * @package MSlwk\Otomoto\App\Stats
26
 */
27
class StatsProviderTest extends TestCase
28
{
29
    /**
30
     * @test
31
     */
32
    public function testGetStats()
33
    {
34
        /** @var MockObject|ManufacturerDTOInterface $manufacturer */
35
        $manufacturer = $this->getMockBuilder(ManufacturerDTOInterface::class)
36
            ->getMock();
37
        /** @var MockObject|ModelDTOInterface $model */
38
        $model = $this->getMockBuilder(ModelDTOInterface::class)
39
            ->getMock();
40
        /** @var MockObject|FilterArray $filters */
41
        $filters = $this->getMockBuilder(FilterArray::class)
42
            ->disableOriginalConstructor()
43
            ->getMock();
44
45
        $stats = $this->getMockBuilder(StatsDTOInterface::class)
46
            ->getMock();
47
        $html = '<html></html>';
48
49
        /** @var MockObject|ModelOffersHtmlProvider $modelOfferHtmlProvider */
50
        $modelOfferHtmlProvider = $this->getMockBuilder(ModelOffersHtmlProvider::class)
51
            ->disableOriginalConstructor()
52
            ->getMock();
53
        $modelOfferHtmlProvider->expects($this->once())
54
            ->method('getAllPagesHtml')
55
            ->with($manufacturer, $model, $filters)
56
            ->will($this->returnValue($html));
57
        /** @var MockObject|StatsHtmlScrapperInterface $statsHtmlScrapper */
58
        $statsHtmlScrapper = $this->getMockBuilder(StatsHtmlScrapperInterface::class)
59
            ->getMock();
60
        $statsHtmlScrapper->expects($this->once())
61
            ->method('scrapModelStats')
62
            ->with($html)
63
            ->will($this->returnValue($stats));
64
65
        $statsProvider = new StatsProvider($modelOfferHtmlProvider, $statsHtmlScrapper);
66
67
        $this->assertEquals($stats, $statsProvider->getStats($manufacturer, $model, $filters));
68
    }
69
}
70