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

BuilderTest::testBuildersHappyPath()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 37
Code Lines 29

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 29
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 37
rs 9.456
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DaveLiddament\StaticAnalysisResultsBaseliner\Tests\Unit\Core\HistoryAnalyser\UnifiedDiffParser\internal;
6
7
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\LineNumber;
8
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\internal\FileMutationBuilder;
9
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\internal\FileMutationsBuilder;
10
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\LineMutation;
11
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\NewFileName;
12
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\UnifiedDiffParser\OriginalFileName;
13
use PHPUnit\Framework\TestCase;
14
15
/**
16
 * Tests to check the FileMutationsBuilder and FileMutationBuilder both work.
17
 */
18
class BuilderTest extends TestCase
19
{
20
    private const FILE_1_NAME = 'foo/bar.php';
21
    private const FILE_2_NAME = 'foo/baz.php';
22
    private const FILE_3_NAME = 'foo/foo.php';
23
24
    public function testBuildersHappyPath(): void
25
    {
26
        $fileMutationsBuilder = new FileMutationsBuilder();
27
28
        $file1OriginalName = new OriginalFileName(self::FILE_1_NAME);
29
        $file1NewName = new NewFileName(self::FILE_1_NAME);
30
        $fileMutationBuilder1 = new FileMutationBuilder($fileMutationsBuilder);
31
        $fileMutationBuilder1->setOriginalFileName($file1OriginalName);
32
        $fileMutationBuilder1->setNewFileName($file1NewName);
33
        $fileMutationBuilder1->addLineMutation(LineMutation::newLineNumber(new LineNumber(1)));
34
        $fileMutationBuilder1->addLineMutation(LineMutation::originalLineNumber(new LineNumber(2)));
35
        $fileMutationBuilder1->build();
36
37
        $file2OriginalName = new OriginalFileName(self::FILE_2_NAME);
38
        $file2NewName = new NewFileName(self::FILE_3_NAME);
39
        $fileMutationBuilder2 = new FileMutationBuilder($fileMutationsBuilder);
40
        $fileMutationBuilder2->setOriginalFileName($file2OriginalName);
41
        $fileMutationBuilder2->setNewFileName($file2NewName);
42
        $fileMutationBuilder2->build();
43
44
        $fileMutations = $fileMutationsBuilder->build();
45
46
        $fileMutation1 = $fileMutations->getFileMutation($file1NewName);
47
        $this->assertNotNull($fileMutation1);
48
        $this->assertSame($file1OriginalName, $fileMutation1->getOriginalFileName());
49
        $this->assertSame($file1NewName, $fileMutation1->getNewFileName());
50
51
        $lineMutations = $fileMutation1->getLineMutations();
52
        $this->assertCount(2, $lineMutations);
53
        $expectedLineMutation1 = LineMutation::newLineNumber(new LineNumber(1));
54
        $this->assertTrue($expectedLineMutation1->isEqual($lineMutations[0]));
55
56
        $fileMutation2 = $fileMutations->getFileMutation($file2NewName);
57
        $this->assertNotNull($fileMutation2);
58
        $this->assertSame($file2OriginalName, $fileMutation2->getOriginalFileName());
59
        $this->assertSame($file2NewName, $fileMutation2->getNewFileName());
60
        $this->assertCount(0, $fileMutation2->getLineMutations());
61
    }
62
}
63