You are here

public function RulesDebugLoggerChannelTest::testLog in Rules 8.3

Tests LoggerChannel::log().

@dataProvider providerTestLog

@covers ::log

Parameters

string $psr3_message_level: Expected PSR3 log level.

int $rfc_message_level: Expected RFC 5424 log level.

bool $system_debug: Is system debug logging enabled.

bool $debug_log_enabled: Is debug logging enabled.

string $psr3_log_error_level: Minimum required PSR3 log level at which to log.

int $expect_system_log: Number of logs expected to be created.

int $expect_screen_log: Number of messages expected to be created.

string $message: Log message.

File

tests/src/Unit/RulesDebugLoggerChannelTest.php, line 90

Class

RulesDebugLoggerChannelTest
@coversDefaultClass \Drupal\rules\Logger\RulesDebugLoggerChannel @group Rules

Namespace

Drupal\Tests\rules\Unit

Code

public function testLog($psr3_message_level, $rfc_message_level, $system_debug, $debug_log_enabled, $psr3_log_error_level, $expect_system_log, $expect_screen_log, $message) {

  // Clean up after previous test.
  $this->rulesDebugLog
    ->clearLogs();
  $config = $this
    ->getConfigFactoryStub([
    'rules.settings' => [
      'system_log' => [
        'log_level' => $psr3_log_error_level,
      ],
      'debug_log' => [
        'enabled' => $debug_log_enabled,
        'system_debug' => $system_debug,
        'log_level' => $psr3_log_error_level,
      ],
    ],
  ]);
  $channel = new RulesDebugLoggerChannel($this->rulesDebugLog, $config);
  $addedLogger = $this
    ->prophesize(LoggerInterface::class);
  $addedLogger
    ->log($rfc_message_level, $message, Argument::type('array'))
    ->shouldBeCalledTimes($expect_screen_log);
  $channel
    ->addLogger($addedLogger
    ->reveal());
  $channel
    ->log($psr3_message_level, $message, []);
  $messages = $this->rulesDebugLog
    ->getLogs();
  if ($expect_screen_log > 0) {
    $this
      ->assertNotNull($messages);
    $context = [
      'channel' => 'rules_debug',
      'link' => '',
      'element' => NULL,
      'scope' => NULL,
      'path' => NULL,
    ];
    $context += $messages[0]['context'];
    $this
      ->assertEquals([
      0 => [
        'message' => $message,
        'context' => $context,
        'level' => $psr3_message_level,
        'timestamp' => $context['timestamp'],
        'scope' => NULL,
        'path' => NULL,
      ],
    ], $messages, "actual =" . var_export($messages, TRUE));
  }
  else {
    $this
      ->assertCount(0, $messages);
  }
}