IssueGrouperTest   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 86
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 60
c 2
b 0
f 0
dl 0
loc 86
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testGroupIssuesWithLabelFilters() 0 31 1
A testGroupIssues() 0 44 1
A setUp() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ChangelogGenerator\Tests;
6
7
use ChangelogGenerator\ChangelogConfig;
8
use ChangelogGenerator\Issue;
9
use ChangelogGenerator\IssueGrouper;
10
use PHPUnit\Framework\TestCase;
11
12
final class IssueGrouperTest extends TestCase
13
{
14
    private IssueGrouper $issueGrouper;
15
16
    public function testGroupIssues(): void
17
    {
18
        $changelogConfig = new ChangelogConfig();
19
20
        $issue1 = new Issue(1, '', '', '', '', ['Enhancement'], false);
21
        $issue2 = new Issue(2, '', '', '', '', ['Bug'], false);
22
        $issue3 = new Issue(3, '', '', '', '', ['Bug'], false);
23
        $issue4 = new Issue(4, '', '', '', '', ['Enhancement'], false);
24
25
        $pullRequest1 = new Issue(5, '', 'Fixes #1', '', '', ['Enhancement'], true);
26
        $pullRequest2 = new Issue(6, '', 'Fixes #2', '', '', ['Bug'], true);
27
        $pullRequest3 = new Issue(7, '', 'Fixes #3', '', '', ['Bug'], true);
28
        $pullRequest4 = new Issue(8, '', 'Fixes #4', '', '', ['Enhancement'], true);
29
30
        $issues = [
31
            $issue1,
32
            $issue2,
33
            $issue3,
34
            $issue4,
35
            $pullRequest1,
36
            $pullRequest2,
37
            $pullRequest3,
38
            $pullRequest4,
39
        ];
40
41
        $issueGroups = $this->issueGrouper->groupIssues($issues, $changelogConfig);
42
43
        self::assertCount(2, $issueGroups);
44
        self::assertTrue(isset($issueGroups['Enhancement']));
45
        self::assertTrue(isset($issueGroups['Bug']));
46
        self::assertContains($pullRequest1, $issueGroups['Enhancement']->getIssues());
47
        self::assertContains($pullRequest2, $issueGroups['Bug']->getIssues());
48
        self::assertContains($pullRequest3, $issueGroups['Bug']->getIssues());
49
        self::assertContains($pullRequest4, $issueGroups['Enhancement']->getIssues());
50
51
        self::assertSame($issue1, $pullRequest1->getLinkedIssue());
52
        self::assertSame($issue2, $pullRequest2->getLinkedIssue());
53
        self::assertSame($issue3, $pullRequest3->getLinkedIssue());
54
        self::assertSame($issue4, $pullRequest4->getLinkedIssue());
55
56
        self::assertSame($pullRequest1, $issue1->getLinkedPullRequest());
57
        self::assertSame($pullRequest2, $issue2->getLinkedPullRequest());
58
        self::assertSame($pullRequest3, $issue3->getLinkedPullRequest());
59
        self::assertSame($pullRequest4, $issue4->getLinkedPullRequest());
60
    }
61
62
    public function testGroupIssuesWithLabelFilters(): void
63
    {
64
        $changelogConfig = new ChangelogConfig();
65
        $changelogConfig->setLabels(['Enhancement', 'Bug']);
66
67
        $issue1 = new Issue(1, '', '', '', '', ['Enhancement', 'Other'], false);
68
        $issue2 = new Issue(2, '', '', '', '', ['Bug', 'Other'], false);
69
        $issue3 = new Issue(3, '', '', '', '', ['Bug', 'Other'], false);
70
        $issue4 = new Issue(4, '', '', '', '', ['Enhancement', 'Other'], false);
71
72
        $pullRequest1 = new Issue(5, '', 'Fixes #1', '', '', ['Enhancement', 'Other'], true);
73
        $pullRequest2 = new Issue(6, '', 'Fixes #2', '', '', ['Bug', 'Other'], true);
74
        $pullRequest3 = new Issue(7, '', 'Fixes #3', '', '', ['Bug', 'Other'], true);
75
        $pullRequest4 = new Issue(8, '', 'Fixes #4', '', '', ['Enhancement', 'Other'], true);
76
77
        $issues = [
78
            $issue1,
79
            $issue2,
80
            $issue3,
81
            $issue4,
82
            $pullRequest1,
83
            $pullRequest2,
84
            $pullRequest3,
85
            $pullRequest4,
86
        ];
87
88
        $issueGroups = $this->issueGrouper->groupIssues($issues, $changelogConfig);
89
90
        self::assertCount(2, $issueGroups);
91
        self::assertTrue(isset($issueGroups['Enhancement']));
92
        self::assertTrue(isset($issueGroups['Bug']));
93
    }
94
95
    protected function setUp(): void
96
    {
97
        $this->issueGrouper = new IssueGrouper();
98
    }
99
}
100