Passed
Branch dev (5c692d)
by Alan
02:14
created

ExtendedConfigTest::testConfig()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 28
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 18
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 28
rs 9.6666
1
<?php
2
3
namespace FigTree\Config\Tests;
4
5
use DateInterval;
6
use DateTime;
7
use FigTree\Config\{
8
	Contracts\ConfigFactoryInterface,
9
	Contracts\ConfigInterface,
10
	AbstractConfigFactory,
11
	AbstractConfig,
12
};
13
use FigTree\Config\Tests\Dummies\{
14
	ExtendedConfigFactory,
15
	ExtendedConfig,
16
	ExtendedConfigReader,
17
};
18
19
class ExtendedConfigTest extends AbstractTestCase
20
{
21
	/**
22
	 * @small
23
	 */
24
	public function testConfigFactory()
25
	{
26
		$timestamp = new DateTime();
27
28
		$factory = new ExtendedConfigFactory($timestamp);
29
30
		$this->assertInstanceOf(ConfigFactoryInterface::class, $factory);
31
		$this->assertInstanceOf(AbstractConfigFactory::class, $factory);
32
		$this->assertInstanceOf(ExtendedConfigFactory::class, $factory);
33
34
		$factory->addDirectory(__DIR__ . '/Data/Config/Extended');
35
36
		$directories = $factory->getDirectories();
37
38
		$this->assertIsArray($directories);
39
		$this->assertCount(1, $directories);
40
41
		$this->assertEquals($this->path(__DIR__, 'Data', 'Config', 'Extended'), $directories[0]);
42
	}
43
44
	public function testConfig()
45
	{
46
		$today = new DateTime();
47
		$yesterday = (clone $today)->sub(new DateInterval('P1D'));
48
		$tomorrow = (clone $today)->add(new DateInterval('P1D'));
49
50
		$factory = new ExtendedConfigFactory($today);
51
52
		$factory->addDirectory(__DIR__ . '/Data/Config/Extended');
53
54
		$config = $factory->get('file');
55
56
		$this->assertInstanceOf(ConfigInterface::class, $config);
57
		$this->assertInstanceOf(AbstractConfig::class, $config);
58
		$this->assertInstanceOf(ExtendedConfig::class, $config);
59
60
		$this->assertArrayHasKey('today', $config);
61
		$this->assertArrayHasKey('yesterday', $config);
62
		$this->assertArrayHasKey('tomorrow', $config);
63
64
		$this->assertIsString($config['today']);
65
		$this->assertEquals($today->format('Y-m-d'), $config['today']);
66
67
		$this->assertIsString($config['yesterday']);
68
		$this->assertEquals($yesterday->format('Y-m-d'), $config['yesterday']);
69
70
		$this->assertIsString($config['tomorrow']);
71
		$this->assertEquals($tomorrow->format('Y-m-d'), $config['tomorrow']);
72
	}
73
}
74