Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions system/Debug/Toolbar/Collectors/Logs.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class Logs extends BaseCollector
*
* @var list<array{level: string, msg: string}>
*/
protected $data;
protected $data = [];

/**
* Returns the data of this collector to be formatted in the toolbar.
Expand All @@ -68,7 +68,7 @@ public function isEmpty(): bool
{
$this->collectLogs();

return $this->data !== [];
return $this->data === [];
}

/**
Expand Down
71 changes: 71 additions & 0 deletions tests/system/Debug/Toolbar/Collectors/LogsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<?php

declare(strict_types=1);

/**
* This file is part of CodeIgniter 4 framework.
*
* (c) CodeIgniter Foundation <[email protected]>
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/

namespace CodeIgniter\Debug\Toolbar\Collectors;

use CodeIgniter\Log\Logger;
use CodeIgniter\Test\CIUnitTestCase;
use Config\Logger as LoggerConfig;
use Config\Services;
use PHPUnit\Framework\Attributes\Group;

/**
* @internal
*/
#[Group('Others')]
final class LogsTest extends CIUnitTestCase
{
private Logger $logger;

protected function setUp(): void
{
parent::setUp();

// The logs collector relies on the logger being in debug mode
// so it would populate logCache.
$this->logger = new Logger(new LoggerConfig(), debug: true);
Services::injectMock('logger', $this->logger);
}

public function testDisplay(): void
{
// log_message() always creates a new TestLogger instance while
// testing, so we need to log directly to our instance.
$this->logger->error('Test error');
$this->logger->info('Test info');

$collector = new Logs();
$result = $collector->display();

$this->assertArrayHasKey('logs', $result);
$this->assertCount(2, $result['logs']);
$this->assertSame('error', $result['logs'][0]['level']);
$this->assertSame('Test error', $result['logs'][0]['msg']);
$this->assertSame('info', $result['logs'][1]['level']);
$this->assertSame('Test info', $result['logs'][1]['msg']);
}

public function testEmpty(): void
{
$collector = new Logs();
$this->assertTrue($collector->isEmpty());
}

public function testNotEmpty(): void
{
$this->logger->warning('Test warning');

$collector = new Logs();
$this->assertFalse($collector->isEmpty());
}
}
Loading