| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- <?php
- namespace Illuminate\Tests\Log;
- use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
- use Illuminate\Events\Dispatcher;
- use Illuminate\Log\Events\MessageLogged;
- use Illuminate\Log\Logger;
- use Mockery as m;
- use Monolog\Logger as Monolog;
- use PHPUnit\Framework\TestCase;
- use RuntimeException;
- class LogLoggerTest extends TestCase
- {
- protected function tearDown(): void
- {
- m::close();
- }
- public function testMethodsPassErrorAdditionsToMonolog()
- {
- $writer = new Logger($monolog = m::mock(Monolog::class));
- $monolog->shouldReceive('error')->once()->with('foo', []);
- $writer->error('foo');
- }
- public function testContextIsAddedToAllSubsequentLogs()
- {
- $writer = new Logger($monolog = m::mock(Monolog::class));
- $writer->withContext(['bar' => 'baz']);
- $monolog->shouldReceive('error')->once()->with('foo', ['bar' => 'baz']);
- $writer->error('foo');
- }
- public function testContextIsFlushed()
- {
- $writer = new Logger($monolog = m::mock(Monolog::class));
- $writer->withContext(['bar' => 'baz']);
- $writer->withoutContext();
- $monolog->expects('error')->with('foo', []);
- $writer->error('foo');
- }
- public function testLoggerFiresEventsDispatcher()
- {
- $writer = new Logger($monolog = m::mock(Monolog::class), $events = new Dispatcher);
- $monolog->shouldReceive('error')->once()->with('foo', []);
- $events->listen(MessageLogged::class, function ($event) {
- $_SERVER['__log.level'] = $event->level;
- $_SERVER['__log.message'] = $event->message;
- $_SERVER['__log.context'] = $event->context;
- });
- $writer->error('foo');
- $this->assertTrue(isset($_SERVER['__log.level']));
- $this->assertSame('error', $_SERVER['__log.level']);
- unset($_SERVER['__log.level']);
- $this->assertTrue(isset($_SERVER['__log.message']));
- $this->assertSame('foo', $_SERVER['__log.message']);
- unset($_SERVER['__log.message']);
- $this->assertTrue(isset($_SERVER['__log.context']));
- $this->assertEquals([], $_SERVER['__log.context']);
- unset($_SERVER['__log.context']);
- }
- public function testListenShortcutFailsWithNoDispatcher()
- {
- $this->expectException(RuntimeException::class);
- $this->expectExceptionMessage('Events dispatcher has not been set.');
- $writer = new Logger(m::mock(Monolog::class));
- $writer->listen(function () {
- //
- });
- }
- public function testListenShortcut()
- {
- $writer = new Logger(m::mock(Monolog::class), $events = m::mock(DispatcherContract::class));
- $callback = function () {
- return 'success';
- };
- $events->shouldReceive('listen')->with(MessageLogged::class, $callback)->once();
- $writer->listen($callback);
- }
- }
|