Skip to content

Commit 0ff3cf6

Browse files
committed
Add better test coverage for BaseServerConfig::castToBool().
1 parent d99bedd commit 0ff3cf6

2 files changed

Lines changed: 33 additions & 7 deletions

File tree

solid/lib/BaseServerConfig.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ public function setUserSubDomainsEnabled($enabled) {
202202

203203
////////////////////////////// UTILITY METHODS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\
204204

205-
private function castToBool(string $mixedValue): bool
205+
private function castToBool(?string $mixedValue): bool
206206
{
207207
$type = gettype($mixedValue);
208208

solid/tests/Unit/BaseServerConfigTest.php

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,13 @@ public function testConstructorWithValidConfig()
4646
/**
4747
* @testdox BaseServerConfig should return a boolean when asked whether UserSubDomains are Enabled
4848
* @covers ::getUserSubDomainsEnabled
49+
* @covers ::castToBool
4950
* @dataProvider provideBooleans
5051
*/
51-
public function testGetUserSubDomainsEnabled($expected)
52+
public function testGetUserSubDomainsEnabled($value, $expected)
5253
{
5354
$configMock = $this->createMock(IConfig::class);
54-
$configMock->method('getAppValue')->willReturn($expected);
55+
$configMock->method('getAppValue')->willReturn($value);
5556

5657
$baseServerConfig = new BaseServerConfig($configMock);
5758
$actual = $baseServerConfig->getUserSubDomainsEnabled();
@@ -80,10 +81,11 @@ public function testGetUserSubDomainsEnabledFromAppConfig()
8081
/**
8182
* @testdox BaseServerConfig should set value in AppConfig when asked to set UserSubDomainsEnabled
8283
* @covers ::setUserSubDomainsEnabled
84+
* @covers ::castToBool
8385
*
8486
* @dataProvider provideBooleans
8587
*/
86-
public function testSetUserSubDomainsEnabled($expected)
88+
public function testSetUserSubDomainsEnabled($value, $expected)
8789
{
8890
$configMock = $this->createMock(IConfig::class);
8991
$configMock->expects($this->atLeast(1))
@@ -92,7 +94,7 @@ public function testSetUserSubDomainsEnabled($expected)
9294
;
9395

9496
$baseServerConfig = new BaseServerConfig($configMock);
95-
$baseServerConfig->setUserSubDomainsEnabled($expected);
97+
$baseServerConfig->setUserSubDomainsEnabled($value);
9698
}
9799

98100
/**
@@ -142,8 +144,32 @@ public function testGetClientRegistrationForNonExistingClient()
142144
public function provideBooleans()
143145
{
144146
return [
145-
'false' => [false],
146-
'true' => [true],
147+
// Only 'boolean', 'NULL', 'integer', 'string' are allowed
148+
// @TODO: Add test for type that trigger a TypeError:
149+
// - array
150+
// - callable
151+
// - float
152+
// - object
153+
// - resource
154+
// @TODO: Add test for values that trigger a TypeError
155+
// 'integer:-1' => ['value'=> -1],
156+
// 'integer:2' => ['value'=> 2],
157+
// 'string:-1' => ['value'=> '-1'],
158+
// 'string:2' => ['value'=> '2'],
159+
// 'string:foo' => ['value'=> 'foo'],
160+
// 'string:NULL' => ['value'=> 'NULL'],
161+
'boolean:false' => ['value'=> false, 'expected' => false],
162+
'boolean:true' => ['value'=> true, 'expected' => true],
163+
'integer:0' => ['value'=> 0, 'expected' => false],
164+
'integer:1' => ['value'=> 1, 'expected' => true],
165+
'NULL' => ['value'=> null, 'expected' => false],
166+
'string:0' => ['value'=> '0', 'expected' => false],
167+
'string:1' => ['value'=> '1', 'expected' => true],
168+
'string:empty' => ['value'=> '', 'expected' => false],
169+
'string:false' => ['value'=> 'false', 'expected' => false],
170+
'string:FALSE' => ['value'=> 'FALSE', 'expected' => false],
171+
'string:true' => ['value'=> 'true', 'expected' => true],
172+
'string:TRUE' => ['value'=> 'TRUE', 'expected' => true],
147173
];
148174
}
149175
}

0 commit comments

Comments
 (0)