Completed
Push — fix-2494 ( 3153ee...40d9bb )
by Sam
13:43 queued 06:38
created

HTTPOutputHandlerTest::testDevConfig()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 0
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace SilverStripe\Logging\Tests;
4
5
use Monolog\Handler\HandlerInterface;
6
use PhpParser\Node\Scalar\MagicConst\Dir;
7
use SilverStripe\Control\Director;
8
use SilverStripe\Core\Injector\Injector;
9
use SilverStripe\Dev\SapphireTest;
10
use SilverStripe\Logging\DebugViewFriendlyErrorFormatter;
11
use SilverStripe\Logging\DetailedErrorFormatter;
12
use SilverStripe\Logging\HTTPOutputHandler;
13
14
class HTTPOutputHandlerTest extends SapphireTest
15
{
16
    public function setUp()
17
    {
18
        parent::setUp();
19
        if (!Director::is_cli()) {
20
            $this->markTestSkipped("This test only runs in CLI mode");
21
        }
22
        if (!Director::isDev()) {
23
            $this->markTestSkipped("This test only runs in dev mode");
24
        }
25
    }
26
27
    public function testGetFormatter()
28
    {
29
        $handler = new HTTPOutputHandler();
30
31
        $detailedFormatter = new DetailedErrorFormatter();
32
        $friendlyFormatter = new DebugViewFriendlyErrorFormatter();
33
34
        // Handler without CLIFormatter chooses correct formatter
35
        $handler->setDefaultFormatter($detailedFormatter);
36
        $this->assertInstanceOf(DetailedErrorFormatter::class, $handler->getFormatter());
37
        $this->assertInstanceOf(DetailedErrorFormatter::class, $handler->getDefaultFormatter());
38
39
        // Handler with CLIFormatter should return that, although default handler is still accessible
40
        $handler->setCLIFormatter($friendlyFormatter);
41
        $this->assertInstanceOf(DebugViewFriendlyErrorFormatter::class, $handler->getFormatter());
42
        $this->assertInstanceOf(DetailedErrorFormatter::class, $handler->getDefaultFormatter());
43
    }
44
45
    /**
46
     * Covers `#dev-logging` section in logging.yml
47
     */
48
    public function testDevConfig()
49
    {
50
        /** @var HTTPOutputHandler $handler */
51
        $handler = Injector::inst()->get(HandlerInterface::class);
52
        $this->assertInstanceOf(HTTPOutputHandler::class, $handler);
53
54
        // Test only default formatter is set, but CLI specific formatter is left out
55
        $this->assertNull($handler->getCLIFormatter());
56
        $this->assertInstanceOf(DetailedErrorFormatter::class, $handler->getDefaultFormatter());
57
        $this->assertInstanceOf(DetailedErrorFormatter::class, $handler->getFormatter());
58
    }
59
}
60