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

testRemoveBaseLineResults()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 51
Code Lines 29

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 29
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 51
rs 9.456

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Unit\Core\Analyser;
6
7
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Analyser\BaseLineResultsRemover;
8
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\AbsoluteFileName;
9
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\LineNumber;
10
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\ProjectRoot;
11
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\Type;
12
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\internal\FileMutationBuilder;
13
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\internal\FileMutationsBuilder;
14
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\LineMutation;
15
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\NewFileName;
16
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\OriginalFileName;
17
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\ResultsParser\AnalysisResultsBuilder;
18
use DaveLiddament\StaticAnalysisResultsBaseliner\Plugins\GitDiffHistoryAnalyser\DiffHistoryAnalyser;
19
use DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Helpers\AnalysisResultsAdderTrait;
20
use DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Helpers\BaseLineResultsBuilder;
21
use PHPUnit\Framework\TestCase;
22
23
class BaseLineResultsRemoveTest extends TestCase
24
{
25
    use AnalysisResultsAdderTrait;
26
27
    private const PROJECT_ROOT_PATH = '/home/sarb';
28
    private const FILE_1 = 'foo/file1.txt';
29
    private const FILE_1_FULL_PATH = self::PROJECT_ROOT_PATH.'/'.self::FILE_1;
30
    private const FILE_2 = 'foo/file2.txt';
31
    private const LINE_9 = 9;
32
    private const LINE_10 = 10;
33
    private const LINE_11 = 11;
34
    private const LINE_15 = 15;
35
    private const TYPE_1 = 'type1';
36
    private const TYPE_2 = 'type2';
37
38
    public function testRemoveBaseLineResults(): void
39
    {
40
        $projectRoot = new ProjectRoot('/home/sarb', '/home/sarb');
41
42
        // Create baseline
43
        $baselineAnalysisResultsBuilder = new BaseLineResultsBuilder();
44
        $baselineAnalysisResultsBuilder->add(self::FILE_1, self::LINE_10, self::TYPE_1);
45
        $baselineAnalysisResultsBuilder->add(self::FILE_2, self::LINE_15, self::TYPE_2);
46
47
        // Create file mutations
48
        $fileMutationsBuilder = new FileMutationsBuilder();
49
        $fileMutationBuilder = new FileMutationBuilder($fileMutationsBuilder);
50
        $fileMutationBuilder->setOriginalFileName(new OriginalFileName(self::FILE_1));
51
        $fileMutationBuilder->setNewFileName(new NewFileName(self::FILE_1));
52
        $fileMutationBuilder->addLineMutation(LineMutation::newLineNumber(new LineNumber(self::LINE_9)));
53
        $fileMutationBuilder->build();
54
        $fileMutations = $fileMutationsBuilder->build();
55
56
        // Create latest results
57
        $latestAnalysisResultsBuilder = new AnalysisResultsBuilder();
58
        // This is in the baseline (it was line 10 in baseline)
59
        $this->addAnalysisResult($latestAnalysisResultsBuilder, $projectRoot, self::FILE_1_FULL_PATH, self::LINE_11, self::TYPE_1);
60
        // Added since baseline
61
        $this->addAnalysisResult($latestAnalysisResultsBuilder, $projectRoot, self::FILE_1_FULL_PATH, self::LINE_9, self::TYPE_2);
62
63
        // Prune baseline results from latest results
64
        $historyAnalyser = new DiffHistoryAnalyser($fileMutations);
65
        $baseLineResultsRemover = new BaseLineResultsRemover();
66
        $prunedAnalysisResults = $baseLineResultsRemover->pruneBaseLine(
67
            $latestAnalysisResultsBuilder->build(),
68
            $historyAnalyser,
69
            $baselineAnalysisResultsBuilder->build()
70
        );
71
72
        $actualResults = $prunedAnalysisResults->getAnalysisResults();
73
74
        // Assert results as expected
75
        // Of the original results:
76
        // the one in FILE_1 line 10 is now at FILE_1 line 11 (so should not appear in the pruned results)
77
        // the one in FILE_2 line 15 is not in latest results
78
        // A new bug has been introduced at FILE_1 line 9 (this is the only one that should appera in the results)
79
        $this->assertCount(1, $actualResults);
80
81
        $actualAnalysisResult = $actualResults[0];
82
        $expectedFileName = new AbsoluteFileName(self::FILE_1_FULL_PATH);
83
        $expectedLineNumber = new LineNumber(self::LINE_9);
84
        $expectedType = new Type(self::TYPE_2);
85
86
        $this->assertTrue($expectedFileName->isEqual($actualAnalysisResult->getLocation()->getAbsoluteFileName()));
87
        $this->assertTrue($expectedLineNumber->isEqual($actualAnalysisResult->getLocation()->getLineNumber()));
88
        $this->assertTrue($expectedType->isEqual($actualAnalysisResult->getType()));
89
    }
90
}
91