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

HTTPOutputHandlerTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Importance

Changes 0
Metric Value
dl 0
loc 46
rs 10
c 0
b 0
f 0
wmc 5
lcom 0
cbo 7

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 10 3
A testGetFormatter() 0 17 1
A testDevConfig() 0 11 1
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