Passed
Push — master ( 9e220a...448f9b )
by Petr
07:43
created

BasicTest::testDyingLoad()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 25
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 17
nc 2
nop 0
dl 0
loc 25
rs 9.7
c 0
b 0
f 0
1
<?php
2
3
namespace BasicTests;
4
5
use CommonTestClass;
6
use kalanis\kw_afterload\Afterload;
7
use kalanis\kw_afterload\AfterloadException;
8
9
10
class BasicTest extends CommonTestClass
11
{
12
    public function testRunningLoad(): void
13
    {
14
        Afterload1::run();
15
        $this->assertTrue(defined('SITE_NAME'));
16
        $this->assertTrue(defined('SITE_PREFIX'));
17
        $this->assertEquals('kwebcms', SITE_NAME);
18
        $this->assertEquals('kwc', SITE_PREFIX);
19
    }
20
21
    public function testDyingLoad(): void
22
    {
23
        $exMessages = [];
24
        try {
25
            Afterload2::run();
26
        } catch (AfterloadException $ex) {
27
            // more than one!
28
            do {
29
                $exMessages[] = $ex->getMessage();
30
            } while($ex = $ex->getPrev()); // NOT previous
31
        }
32
33
        // check constants
34
        $this->assertTrue(defined('X_SITE_NAME'));
35
        $this->assertTrue(defined('X_SITE_PREFIX'));
36
        $this->assertTrue(defined('MODULE_FOR_INPUT'));
37
        $this->assertFalse(defined('MODULE_FOR_OUTPUT'));
38
        $this->assertEquals('kwebcms', X_SITE_NAME);
39
        $this->assertEquals('kwc', X_SITE_PREFIX);
40
        $this->assertEquals('markdown', MODULE_FOR_INPUT);
41
42
        // now check messages - they comes in reversed order!
43
        $this->assertEquals('something else has died', reset($exMessages));
44
        $this->assertEquals('something has died', next($exMessages));
45
        $this->assertEmpty(next($exMessages));
46
    }
47
48
    public function testNoLoad(): void
49
    {
50
        Afterload3::run();
51
        $this->assertFalse(defined('MODULE_FOR_OUTPUT'));
52
    }
53
}
54
55
56
/**
57
 * Class Afterload1
58
 * @package BasicTests
59
 * Contains simple running code
60
 */
61
class Afterload1 extends Afterload
62
{
63
    protected function path(): array
64
    {
65
        return [__DIR__, '..', 'test_data_1'];
66
    }
67
}
68
69
70
/**
71
 * Class Afterload2
72
 * @package BasicTests
73
 * Contains error-throwing configs
74
 */
75
class Afterload2 extends Afterload
76
{
77
    protected function path(): array
78
    {
79
        return [__DIR__, '..', 'test_data_2'];
80
    }
81
}
82
83
84
/**
85
 * Class Afterload3
86
 * @package BasicTests
87
 * Contains path which does not exists
88
 */
89
class Afterload3 extends Afterload
90
{
91
    protected function path(): array
92
    {
93
        return [__DIR__, '..', 'test_data_3'];
94
    }
95
}
96