Completed
Push — master ( 41ae82...437c90 )
by Dave
13s queued 11s
created

AnalysisResultsTest::test1AnalysisResult()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 1
eloc 10
c 3
b 0
f 0
nc 1
nop 0
dl 0
loc 13
rs 9.9332
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Unit\Core\ResultsParser;
6
7
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\ProjectRoot;
8
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\ResultsParser\AnalysisResultsBuilder;
9
use DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Helpers\AnalysisResultsAdderTrait;
10
use PHPUnit\Framework\TestCase;
11
12
class AnalysisResultsTest extends TestCase
13
{
14
    use AnalysisResultsAdderTrait;
15
    private const FILE_A = '/FILE_A';
16
    private const FILE_B = '/FILE_B';
17
    private const LINE_1 = 1;
18
    private const LINE_2 = 2;
19
    private const TYPE = 'TYPE_A';
20
21
    /**
22
     * @var AnalysisResultsBuilder
23
     */
24
    private $analysisResultsBuilder;
25
26
    /**
27
     * @var ProjectRoot
28
     */
29
    private $projectRoot;
30
31
    protected function setUp(): void
32
    {
33
        $this->analysisResultsBuilder = new AnalysisResultsBuilder();
34
        $this->projectRoot = new ProjectRoot('/', '/');
35
    }
36
37
    public function testNoResults(): void
38
    {
39
        $analysisResults = $this->analysisResultsBuilder->build();
40
        $this->assertTrue($analysisResults->hasNoIssues());
41
        $this->assertSame(0, $analysisResults->getCount());
42
        $this->assertSame([], $analysisResults->getAnalysisResults());
43
    }
44
45
    public function test1AnalysisResult(): void
46
    {
47
        $analysisResult = $this->buildAnalysisResult(
48
            $this->projectRoot,
49
            self::FILE_A,
50
            self::LINE_1,
51
            self::TYPE
52
        );
53
        $this->analysisResultsBuilder->addAnalysisResult($analysisResult);
54
        $analysisResults = $this->analysisResultsBuilder->build();
55
        $this->assertFalse($analysisResults->hasNoIssues());
56
        $this->assertSame(1, $analysisResults->getCount());
57
        $this->assertSame([$analysisResult], $analysisResults->getAnalysisResults());
58
    }
59
60
    public function test3AnalysisResultsAreOrderedCorrectly(): void
61
    {
62
        $analysisResult1 = $this->buildAnalysisResult($this->projectRoot, self::FILE_A, self::LINE_1, self::TYPE);
63
        $analysisResult2 = $this->buildAnalysisResult($this->projectRoot, self::FILE_A, self::LINE_2, self::TYPE);
64
        $analysisResult3 = $this->buildAnalysisResult($this->projectRoot, self::FILE_B, self::LINE_1, self::TYPE);
65
66
        // Add results in none expected order
67
        $this->analysisResultsBuilder->addAnalysisResult($analysisResult2);
68
        $this->analysisResultsBuilder->addAnalysisResult($analysisResult3);
69
        $this->analysisResultsBuilder->addAnalysisResult($analysisResult1);
70
71
        $analysisResults = $this->analysisResultsBuilder->build();
72
        $this->assertFalse($analysisResults->hasNoIssues());
73
        $this->assertSame(3, $analysisResults->getCount());
74
        $this->assertSame([
75
            $analysisResult1,
76
            $analysisResult2,
77
            $analysisResult3,
78
        ], $analysisResults->getAnalysisResults());
79
    }
80
}
81