Completed
Push — master ( d4f713...589745 )
by Jonathan
12s queued 11s
created

ChangelogConfigTest::testGetSetGitHubCredentials()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 0
dl 0
loc 12
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ChangelogGenerator\Tests;
6
7
use ChangelogGenerator\ChangelogConfig;
8
use ChangelogGenerator\GitHubCredentials;
9
use ChangelogGenerator\GitHubUsernamePassword;
10
use PHPUnit\Framework\TestCase;
11
12
final class ChangelogConfigTest extends TestCase
13
{
14
    /** @var string */
15
    private $user;
16
17
    /** @var string */
18
    private $repository;
19
20
    /** @var string */
21
    private $milestone;
22
23
    /** @var string[] */
24
    private $labels = [];
25
26
    /** @var bool */
27
    private $includeOpen = false;
28
29
    /** @var string[] */
30
    private $options = [];
31
32
    /** @var ChangelogConfig */
33
    private $changelogConfig;
34
35
    public function testGetSetUser() : void
36
    {
37
        self::assertEquals($this->user, $this->changelogConfig->getUser());
38
39
        $this->changelogConfig->setUser('romanb');
40
41
        self::assertEquals('romanb', $this->changelogConfig->getUser());
42
    }
43
44
    public function testGetSetRepository() : void
45
    {
46
        self::assertEquals($this->repository, $this->changelogConfig->getRepository());
47
48
        $this->changelogConfig->setRepository('purl');
49
50
        self::assertEquals('purl', $this->changelogConfig->getRepository());
51
    }
52
53
    public function testGetSetMilestone() : void
54
    {
55
        self::assertEquals($this->milestone, $this->changelogConfig->getMilestone());
56
57
        $this->changelogConfig->setMilestone('1.0');
58
59
        self::assertEquals('1.0', $this->changelogConfig->getMilestone());
60
    }
61
62
    public function testGetSetLabels() : void
63
    {
64
        self::assertEquals($this->labels, $this->changelogConfig->getLabels());
65
66
        $this->changelogConfig->setLabels(['Improvement']);
67
68
        self::assertEquals(['Improvement'], $this->changelogConfig->getLabels());
69
    }
70
71
    public function testGetSetIncludeOpen() : void
72
    {
73
        self::assertEquals($this->includeOpen, $this->changelogConfig->shouldIncludeOpen());
74
75
        $this->changelogConfig->setIncludeOpen(true);
76
77
        self::assertTrue($this->changelogConfig->shouldIncludeOpen());
78
    }
79
80
    public function testGetSetOptions() : void
81
    {
82
        self::assertEquals(['rootGitHubUrl' => 'https://api.github.com'], $this->changelogConfig->getOptions());
83
84
        $this->changelogConfig->setOptions(['rootGitHubUrl' => 'https://git.mycompany.com/api/v3']);
85
86
        self::assertEquals(['rootGitHubUrl' => 'https://git.mycompany.com/api/v3'], $this->changelogConfig->getOptions());
87
    }
88
89
    public function testGetSetOption() : void
90
    {
91
        self::assertNull($this->changelogConfig->getOption('test'));
92
93
        $this->changelogConfig->setOption('test', true);
94
95
        self::assertTrue($this->changelogConfig->getOption('test'));
96
    }
97
98
    public function testGetMilestoneIssuesUrl() : void
99
    {
100
        self::assertEquals('https://api.github.com/search/issues?q=milestone%3A%221.0%22+repo%3Ajwage%2Fchangelog-generator+state%3Aclosed+label%3AEnhancement', $this->changelogConfig->getMilestoneIssuesUrl('Enhancement'));
101
    }
102
103
    public function testGetMilestoneIssuesUrlNoLabel() : void
104
    {
105
        self::assertEquals('https://api.github.com/search/issues?q=milestone%3A%221.0%22+repo%3Ajwage%2Fchangelog-generator+state%3Aclosed', $this->changelogConfig->getMilestoneIssuesUrl(''));
106
    }
107
108
    public function testGetMilestoneIssuesUrlWithCustomRootGitHubUrl() : void
109
    {
110
        $this->changelogConfig->setOptions(['rootGitHubUrl' => 'https://git.mycompany.com/api/v3']);
111
112
        self::assertEquals('https://git.mycompany.com/api/v3/search/issues?q=milestone%3A%221.0%22+repo%3Ajwage%2Fchangelog-generator+state%3Aclosed+label%3AEnhancement', $this->changelogConfig->getMilestoneIssuesUrl('Enhancement'));
113
    }
114
115
    public function testGetMilestoneIssuesUrlWithMissingRootGitHubUrl() : void
116
    {
117
        $this->changelogConfig->setOptions([]);
118
119
        self::assertEquals('https://api.github.com/search/issues?q=milestone%3A%221.0%22+repo%3Ajwage%2Fchangelog-generator+state%3Aclosed+label%3AEnhancement', $this->changelogConfig->getMilestoneIssuesUrl('Enhancement'));
120
    }
121
122
    public function testGetMilestoneIssuesUrlWithOpenIncluded() : void
123
    {
124
        $this->changelogConfig->setIncludeOpen(true);
125
126
        self::assertEquals('https://api.github.com/search/issues?q=milestone%3A%221.0%22+repo%3Ajwage%2Fchangelog-generator+label%3AEnhancement', $this->changelogConfig->getMilestoneIssuesUrl('Enhancement'));
127
    }
128
129
    public function testIsValid() : void
130
    {
131
        self::assertTrue($this->changelogConfig->isValid());
132
133
        $changelogConfig = new ChangelogConfig(
134
            '',
135
            $this->repository,
136
            $this->milestone,
137
            $this->labels,
138
            $this->includeOpen,
139
            $this->options
140
        );
141
142
        self::assertFalse($changelogConfig->isValid());
143
    }
144
145
    public function testGetSetGitHubCredentials() : void
146
    {
147
        self::assertNull($this->changelogConfig->getGitHubCredentials());
148
149
        $expectedGitHubCredentials = new GitHubUsernamePassword('username', 'password');
150
151
        $this->changelogConfig->setGitHubCredentials($expectedGitHubCredentials);
152
153
        /** @var GitHubCredentials $gitHubCredentials */
154
        $gitHubCredentials = $this->changelogConfig->getGitHubCredentials();
155
156
        self::assertSame($expectedGitHubCredentials, $gitHubCredentials);
157
    }
158
159
    protected function setUp() : void
160
    {
161
        $this->user       = 'jwage';
162
        $this->repository = 'changelog-generator';
163
        $this->milestone  = '1.0';
164
        $this->labels     = ['Enhancement', 'Bug'];
165
        $this->options    = [];
166
167
        $this->changelogConfig = new ChangelogConfig(
168
            $this->user,
169
            $this->repository,
170
            $this->milestone,
171
            $this->labels,
172
            $this->includeOpen,
173
            $this->options
174
        );
175
    }
176
}
177