Completed
Push — master ( ba7c5d...c3b626 )
by Julián
02:08
created

RenderTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 111
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 111
wmc 6
lcom 1
cbo 5
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A testStatus() 0 12 1
A testRenderingNotActiveHtml() 0 12 1
A testRenderingActiveHtml() 0 15 1
A testRenderingActiveJson() 0 17 1
A testRenderingActiveXml() 0 17 1
A testRenderingScheduled() 0 12 1
1
<?php
2
/**
3
 * Effortless maintenance management (http://juliangut.com/janitor)
4
 *
5
 * @link https://github.com/juliangut/janitor for the canonical source repository
6
 *
7
 * @license https://github.com/juliangut/janitor/blob/master/LICENSE
8
 */
9
10
namespace Janitor\Test\Handler;
11
12
use Janitor\Handler\Render;
13
use Zend\Diactoros\ServerRequestFactory;
14
use Zend\Diactoros\Response;
15
16
/**
17
 * @covers \Janitor\Handler\Render
18
 */
19
class RenderTest extends \PHPUnit_Framework_TestCase
20
{
21
    /**
22
     * @covers \Janitor\Handler\Render::__invoke
23
     */
24
    public function testStatus()
25
    {
26
        $watcher = $this->getMock('Janitor\\Watcher');
27
        $watcher->expects($this->once())->method('isActive')->will($this->returnValue(false));
28
        $handler = new Render;
29
30
        $response = $handler(ServerRequestFactory::fromGlobals(), new Response('php://temp'), $watcher);
31
32
        $this->assertEquals(503, $response->getStatusCode());
33
        $this->assertEquals('no-cache', $response->getHeaderLine('Pragma'));
34
        $this->assertTrue($response->hasHeader('Cache-Control'));
35
    }
36
37
    /**
38
     * @covers \Janitor\Handler\Render::__invoke
39
     */
40
    public function testRenderingNotActiveHtml()
41
    {
42
        $watcher = $this->getMock('Janitor\\Watcher');
43
        $watcher->expects($this->once())->method('isActive')->will($this->returnValue(false));
44
        $handler = new Render;
45
46
        $response = $handler(ServerRequestFactory::fromGlobals(), new Response('php://temp'), $watcher);
47
48
        $this->assertEquals('text/html', $response->getHeaderLine('Content-Type'));
49
        $this->assertEquals('<html><head>', substr($response->getBody(), 0, 12));
50
        $this->assertNotFalse(strpos($response->getBody(), 'Maintenance mode is not active!'));
51
    }
52
53
    /**
54
     * @covers \Janitor\Handler\Render::__invoke
55
     */
56
    public function testRenderingActiveHtml()
57
    {
58
        $watcher = $this->getMock('Janitor\\Watcher');
59
        $watcher->expects($this->once())->method('isActive')->will($this->returnValue(true));
60
        $handler = new Render;
61
62
        $request = ServerRequestFactory::fromGlobals();
63
        $request = $request->withHeader('Accept', 'text/html');
64
65
        $response = $handler($request, new Response('php://temp'), $watcher);
66
67
        $this->assertEquals('text/html', $response->getHeaderLine('Content-Type'));
68
        $this->assertEquals('<html><head>', substr($response->getBody(), 0, 12));
69
        $this->assertNotFalse(strpos($response->getBody(), 'Undergoing maintenance tasks'));
70
    }
71
72
    /**
73
     * @covers \Janitor\Handler\Render::__invoke
74
     */
75
    public function testRenderingActiveJson()
76
    {
77
        $watcher = $this->getMock('Janitor\\Watcher');
78
        $watcher->expects($this->once())->method('isActive')->will($this->returnValue(true));
79
        $handler = new Render;
80
81
        $request = ServerRequestFactory::fromGlobals();
82
        $request = $request->withHeader('Accept', 'application/json');
83
84
        $response = $handler($request, new Response('php://temp'), $watcher);
85
86
        $this->assertEquals('application/json', $response->getHeaderLine('Content-Type'));
87
        $this->assertEquals(
88
            '{    "message": "Undergoing maintenance tasks"}',
89
            str_replace("\n", '', $response->getBody())
90
        );
91
    }
92
93
    /**
94
     * @covers \Janitor\Handler\Render::__invoke
95
     */
96
    public function testRenderingActiveXml()
97
    {
98
        $watcher = $this->getMock('Janitor\\Watcher');
99
        $watcher->expects($this->once())->method('isActive')->will($this->returnValue(true));
100
        $handler = new Render;
101
102
        $request = ServerRequestFactory::fromGlobals();
103
        $request = $request->withHeader('Accept', 'application/xml');
104
105
        $response = $handler($request, new Response('php://temp'), $watcher);
106
107
        $this->assertEquals('application/xml', $response->getHeaderLine('Content-Type'));
108
        $this->assertEquals(
109
            '<maintenance>  <message>Undergoing maintenance tasks</message></maintenance>',
110
            str_replace("\n", '', $response->getBody())
111
        );
112
    }
113
114
    /**
115
     * @covers \Janitor\Handler\Render::__invoke
116
     */
117
    public function testRenderingScheduled()
118
    {
119
        $watcher = $this->getMock('Janitor\\ScheduledWatcher');
120
        $watcher->expects($this->once())->method('isActive')->will($this->returnValue(true));
121
        $watcher->expects($this->any())->method('getEnd')->will($this->returnValue(new \DateTime));
122
        $handler = new Render;
123
124
        $response = $handler(ServerRequestFactory::fromGlobals(), new Response('php://temp'), $watcher);
125
126
        $this->assertTrue($response->hasHeader('Expires'));
127
        $this->assertNotFalse(strpos($response->getBody(), 'Undergoing maintenance tasks until'));
128
    }
129
}
130