InitStateMiddlewareTest::testGetIsFrontend()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 3
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace TractorCow\Fluent\Tests\Middleware;
4
5
use SilverStripe\Dev\SapphireTest;
6
use SilverStripe\Control\HTTPRequest;
7
use TractorCow\Fluent\Middleware\InitStateMiddleware;
8
9
class InitStateMiddlewareTest extends SapphireTest
10
{
11
    /**
12
     * @dataProvider isFrontendProvider
13
     * @param string $url
14
     * @param array $getVars
15
     * @param string $expected
16
     */
17
    public function testGetIsFrontend($url, $getVars, $expected)
18
    {
19
        $request = new HTTPRequest('GET', $url, $getVars);
20
        $result = (new InitStateMiddleware)->getIsFrontend($request);
21
        $this->assertSame($expected, $result, 'isFrontend detects whether a request is for the frontend website');
22
    }
23
24
    /**
25
     * @return array[]
26
     */
27
    public function isFrontendProvider()
28
    {
29
        return [
30
            ['admin', [], false],
31
            ['admin/', [], false],
32
            ['dev/build', [], false],
33
            ['admin/graphql', [], false],
34
            ['graphql', [], true],
35
            ['/', [], true],
36
            ['foo', [], true],
37
            ['my-blog/my-post', [], true],
38
            ['my-blog/my-post', ['CMSPreview' => 1], false],
39
        ];
40
    }
41
}
42