AnnotatableTest::testSetUp()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 5
rs 10
1
<?php
2
3
namespace SilverLeague\IDEAnnotator\Tests;
4
5
use SilverLeague\IDEAnnotator\DataObjectAnnotator;
6
use SilverLeague\IDEAnnotator\Extensions\Annotatable;
7
use SilverLeague\IDEAnnotator\Helpers\AnnotatePermissionChecker;
8
use SilverStripe\Control\Controller;
9
use SilverStripe\Control\HTTPRequest;
10
use SilverStripe\Core\Environment;
11
use SilverStripe\Core\Injector\Injector;
12
use SilverStripe\Dev\SapphireTest;
13
14
class AnnotatableTest extends SapphireTest
15
{
16
17
    /**
18
     * @var Annotatable
19
     */
20
    protected $extension;
21
22
    public function testSetUp()
23
    {
24
        $this->extension->setUp();
25
        $this->assertInstanceOf(DataObjectAnnotator::class, $this->extension->getAnnotator());
26
        $this->assertInstanceOf(AnnotatePermissionChecker::class, $this->extension->getPermissionChecker());
27
    }
28
29
    public function testOutput()
30
    {
31
        $this->extension->displayMessage('Hello world');
32
        $this->expectOutputString("\nHello world\n\n");
33
    }
34
35
    public function testDisplayEndMessage()
36
    {
37
        $this->extension->displayMessage('Hello world', true, true);
38
        $this->expectOutputString("\nHELLO WORLD");
39
    }
40
41
    public function testDisplayHeaderMessage()
42
    {
43
        $this->extension->displayMessage('Hello world', true);
44
        $this->expectOutputString("\nHELLO WORLD\n\n");
45
    }
46
47
    public function testAfterCallActionHandlerRequestBlock()
48
    {
49
        $request = new HTTPRequest('GET', '/dev/build', ['skipannotation' => true]);
50
        $this->extension->getOwner()->setRequest($request);
51
52
        $this->assertFalse($this->extension->annotateModules());
53
    }
54
55
    public function testAfterCallActionHandlerConfigBlock()
56
    {
57
        DataObjectAnnotator::config()->set('enabled', false);
58
59
        $this->assertFalse($this->extension->annotateModules());
60
    }
61
62
    public function testAfterCallActionHandlerDevBlock()
63
    {
64
        Environment::setEnv('SS_ENVIRONMENT_TYPE', 'Live');
65
66
        $this->assertFalse($this->extension->annotateModules());
67
    }
68
69
    public function testAfterCallActionHandler()
70
    {
71
        $request = new HTTPRequest('GET', '/dev/build');
72
        $this->extension->getOwner()->setRequest($request);
73
        DataObjectAnnotator::config()->set('enabled', true);
74
        DataObjectAnnotator::config()->set('enabled_modules', ['mysite', 'app']);
75
        $this->assertTrue($this->extension->annotateModules());
76
    }
77
78
    public function testAfterCallActionHandlerRun()
79
    {
80
        $request = new HTTPRequest('GET', '/dev/build');
81
        $this->extension->getOwner()->setRequest($request);
82
        DataObjectAnnotator::config()->set('enabled', true);
83
        DataObjectAnnotator::config()->set('enabled_modules', ['mysite', 'app']);
84
85
        $this->extension->afterCallActionHandler();
86
87
        $output = $this->getActualOutput();
88
        $this->assertStringContainsString("GENERATING CLASS DOCBLOCKS", $output);
89
        $this->assertStringContainsString("+ Page", $output);
90
        $this->assertStringContainsString("DOCBLOCK GENERATION FINISHED!", $output);
91
    }
92
93
    protected function setUp(): void
94
    {
95
        parent::setUp();
96
        $this->extension = Injector::inst()->get(Annotatable::class);
97
        $this->extension->setOwner(Controller::create());
98
    }
99
}
100