<?php

namespace SilverStripe\Logging\Tests;

use Psr\Log\LoggerInterface;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\Logging\MonologErrorHandler;

class MonologErrorHandlerTest extends SapphireTest
{
    /**
     * @expectedException \InvalidArgumentException
     * @expectedExceptionMessageRegExp /No Logger properties passed to MonologErrorHandler/
     */
    public function testStartThrowsExceptionWithoutLoggerDefined()
    {
        $handler = new MonologErrorHandler();
        $handler->start();
    }

    public function testSetLoggerResetsStack()
    {
        /** @var LoggerInterface $logger */
        $logger = $this->createMock(LoggerInterface::class);

        $handler = new MonologErrorHandler();
        $handler->pushLogger($logger)->pushLogger($logger);
        $this->assertCount(2, $handler->getLoggers(), 'Loggers are pushed to the stack');

        $handler->setLogger($logger);
        $this->assertCount(1, $handler->getLoggers(), 'setLogger resets stack and pushes');

        $handler->setLoggers([]);
        $this->assertCount(0, $handler->getLoggers(), 'setLoggers overwrites all configured loggers');
    }
}