PhpmdJsonResultsParserTest::testConversion()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 31
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 22
nc 1
nop 0
dl 0
loc 31
rs 9.568
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Unit\Plugins\ResultsParsers\PhpmdJsonResultsParser;
6
7
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\ProjectRoot;
8
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\Severity;
9
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\ResultsParser\AnalysisResults;
10
use DaveLiddament\StaticAnalysisResultsBaseliner\Plugins\ResultsParsers\PhpmdJsonResultsParser\PhpmdJsonIdentifier;
11
use DaveLiddament\StaticAnalysisResultsBaseliner\Plugins\ResultsParsers\PhpmdJsonResultsParser\PhpmdJsonResultsParser;
12
use DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Helpers\AssertFileContentsSameTrait;
13
use DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Helpers\AssertResultMatch;
14
use DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Helpers\ResourceLoaderTrait;
15
use PHPUnit\Framework\TestCase;
16
17
final class PhpmdJsonResultsParserTest extends TestCase
18
{
19
    use AssertFileContentsSameTrait;
20
    use AssertResultMatch;
21
    use ResourceLoaderTrait;
22
23
    /**
24
     * @var AnalysisResults
25
     */
26
    private $analysisResults;
27
28
    /**
29
     * @var PhpmdJsonResultsParser
30
     */
31
    private $phpmdResultsParser;
32
33
    protected function setUp(): void
34
    {
35
        $projectRoot = ProjectRoot::fromProjectRoot('/vagrant/static-analysis-baseliner', '/home');
36
37
        $this->phpmdResultsParser = new PhpmdJsonResultsParser();
38
        $original = $this->getResource('phpmd/phpmd.json');
39
40
        // Convert both ways
41
        $this->analysisResults = $this->phpmdResultsParser->convertFromString($original, $projectRoot);
42
    }
43
44
    public function testConversion(): void
45
    {
46
        $this->assertCount(3, $this->analysisResults->getAnalysisResults());
47
48
        $result1 = $this->analysisResults->getAnalysisResults()[0];
49
        $result2 = $this->analysisResults->getAnalysisResults()[1];
50
        $result3 = $this->analysisResults->getAnalysisResults()[2];
51
52
        $this->assertMatch($result1,
53
            'src/Domain/Analyser/BaseLineResultsRemover.php',
54
            28,
55
            'LongVariable',
56
            Severity::error(),
57
        );
58
        $this->assertSame(
59
            'Avoid excessively long variable names like $latestAnalysisResults. Keep variable name length under 20.',
60
            $result1->getMessage(),
61
        );
62
63
        $this->assertMatch($result2,
64
            'src/Domain/Analyser/BaseLineResultsRemover.php',
65
            30,
66
            'LongVariable',
67
            Severity::error(),
68
        );
69
70
        $this->assertMatch($result3,
71
            'src/Domain/Analyser/internal/BaseLineResultsComparator.php',
72
            36,
73
            'LongVariable',
74
            Severity::error(),
75
        );
76
    }
77
78
    public function testTypeGuesser(): void
79
    {
80
        $this->assertFalse($this->phpmdResultsParser->showTypeGuessingWarning());
81
    }
82
83
    public function testGetIdentifier(): void
84
    {
85
        $this->assertEquals(new PhpmdJsonIdentifier(), $this->phpmdResultsParser->getIdentifier());
86
    }
87
}
88