1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace SilverStripe\ModuleRatings\Tests\Check; |
4
|
|
|
|
5
|
|
|
use GuzzleHttp\Client; |
6
|
|
|
use PHPUnit\Framework\TestCase; |
7
|
|
|
use SilverStripe\ModuleRatings\Check\AbstractCodeCoverageCheck; |
8
|
|
|
use SilverStripe\ModuleRatings\CheckSuite; |
9
|
|
|
|
10
|
|
|
class AbstractCodeCoverageCheckTest extends TestCase |
11
|
|
|
{ |
12
|
|
|
/** |
13
|
|
|
* @var CheckSuite |
14
|
|
|
*/ |
15
|
|
|
protected $checkSuite; |
16
|
|
|
|
17
|
|
|
/** |
18
|
|
|
* @var Client |
19
|
|
|
*/ |
20
|
|
|
protected $client; |
21
|
|
|
|
22
|
|
|
/** |
23
|
|
|
* @var AbstractCodeCoverageCheck |
24
|
|
|
*/ |
25
|
|
|
protected $check; |
26
|
|
|
|
27
|
|
|
protected function setUp(): void |
28
|
|
|
{ |
29
|
|
|
parent::setUp(); |
30
|
|
|
|
31
|
|
|
$this->checkSuite = (new CheckSuite())->setRepositorySlug('foo/bar'); |
32
|
|
|
|
33
|
|
|
$this->client = $this->getMockBuilder(Client::class) |
|
|
|
|
34
|
|
|
->setMethods(['get', 'getBody']) |
35
|
|
|
->getMock(); |
36
|
|
|
|
37
|
|
|
$this->client->method('get')->will($this->returnSelf()); |
38
|
|
|
|
39
|
|
|
$this->check = $this->getMockBuilder(AbstractCodeCoverageCheck::class) |
|
|
|
|
40
|
|
|
->setConstructorArgs([$this->client]) |
41
|
|
|
->getMockForAbstractClass(); |
42
|
|
|
|
43
|
|
|
$this->check->setSuite($this->checkSuite); |
44
|
|
|
} |
45
|
|
|
|
46
|
|
|
public function testGetCoverageReturnsZeroWhenSlugIsNotSet() |
47
|
|
|
{ |
48
|
|
|
$this->checkSuite->setRepositorySlug(null); |
49
|
|
|
$this->assertSame(0, $this->check->getCoverage()); |
50
|
|
|
} |
51
|
|
|
|
52
|
|
|
public function testGetCodecovCoverageFetchFailure() |
53
|
|
|
{ |
54
|
|
|
$this->client->expects($this->once())->method('getBody')->willReturn(false); |
|
|
|
|
55
|
|
|
$this->assertFalse($this->check->getCodecovCoverage()); |
56
|
|
|
} |
57
|
|
|
|
58
|
|
|
public function testGetCodecovCoverageNotFoundFailure() |
59
|
|
|
{ |
60
|
|
|
$this->client->expects($this->once())->method('getBody')->willReturn('{ |
61
|
|
|
"meta": { |
62
|
|
|
"status": 404 |
63
|
|
|
} |
64
|
|
|
}'); |
65
|
|
|
$this->assertFalse($this->check->getCodecovCoverage()); |
66
|
|
|
} |
67
|
|
|
|
68
|
|
|
public function testGetCodecovCoverageReturnsResult() |
69
|
|
|
{ |
70
|
|
|
$this->client->expects($this->once())->method('getBody')->willReturn('{ |
71
|
|
|
"meta": { |
72
|
|
|
"status": 200 |
73
|
|
|
}, |
74
|
|
|
"commit": { |
75
|
|
|
"totals": { |
76
|
|
|
"c": 85 |
77
|
|
|
} |
78
|
|
|
} |
79
|
|
|
}'); |
80
|
|
|
$this->assertSame(85, $this->check->getCodecovCoverage()); |
81
|
|
|
} |
82
|
|
|
|
83
|
|
|
public function testGetCodecovCoverageDefaultReturn() |
84
|
|
|
{ |
85
|
|
|
$this->client->expects($this->once())->method('getBody')->willReturn('{ |
86
|
|
|
"meta": { |
87
|
|
|
"status": 200 |
88
|
|
|
}, |
89
|
|
|
"commit": { |
90
|
|
|
"totals": { |
91
|
|
|
"wrong_key": 85 |
92
|
|
|
} |
93
|
|
|
} |
94
|
|
|
}'); |
95
|
|
|
$this->assertSame(0, $this->check->getCodecovCoverage()); |
96
|
|
|
} |
97
|
|
|
|
98
|
|
|
public function testGetScrutinizerCoverageFetchFailure() |
99
|
|
|
{ |
100
|
|
|
$this->client->expects($this->once())->method('getBody')->willReturn(false); |
101
|
|
|
$this->assertFalse($this->check->getScrutinizerCoverage()); |
102
|
|
|
} |
103
|
|
|
|
104
|
|
|
public function testGetScrutinizerCoverageNotFoundFailure() |
105
|
|
|
{ |
106
|
|
|
$this->client->expects($this->once())->method('getBody')->willReturn('{ |
107
|
|
|
"applications": [] |
108
|
|
|
}'); |
109
|
|
|
$this->assertFalse($this->check->getScrutinizerCoverage()); |
110
|
|
|
} |
111
|
|
|
|
112
|
|
|
public function testGetScrutinizerCoverageReturnsResult() |
113
|
|
|
{ |
114
|
|
|
$this->client->expects($this->once())->method('getBody')->willReturn('{ |
115
|
|
|
"applications": { |
116
|
|
|
"master": { |
117
|
|
|
"index": { |
118
|
|
|
"_embedded": { |
119
|
|
|
"project": { |
120
|
|
|
"metric_values": { |
121
|
|
|
"scrutinizer.test_coverage": 0.5 |
122
|
|
|
} |
123
|
|
|
} |
124
|
|
|
} |
125
|
|
|
} |
126
|
|
|
} |
127
|
|
|
} |
128
|
|
|
}'); |
129
|
|
|
$this->assertEquals(50, $this->check->getScrutinizerCoverage()); |
130
|
|
|
} |
131
|
|
|
|
132
|
|
|
/** |
133
|
|
|
* This test represents a default Scrutinizer repository API response which will have a code quality |
134
|
|
|
* rating but not a code coverage rating |
135
|
|
|
*/ |
136
|
|
|
public function testGetScrutinizerCoverageDefaultReturn() |
137
|
|
|
{ |
138
|
|
|
$this->client->expects($this->once())->method('getBody')->willReturn('{ |
139
|
|
|
"applications": { |
140
|
|
|
"master": { |
141
|
|
|
"index": { |
142
|
|
|
"_embedded": { |
143
|
|
|
"project": { |
144
|
|
|
"metric_values": { |
145
|
|
|
"scrutinizer.quality": 7.423076923076923 |
146
|
|
|
} |
147
|
|
|
} |
148
|
|
|
} |
149
|
|
|
} |
150
|
|
|
} |
151
|
|
|
} |
152
|
|
|
}'); |
153
|
|
|
$this->assertSame(0, $this->check->getScrutinizerCoverage()); |
154
|
|
|
} |
155
|
|
|
} |
156
|
|
|
|
This function has been deprecated. The supplier of the function has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.