Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / dblog / tests / src / Functional / FakeLogEntries.php
diff --git a/web/core/modules/dblog/tests/src/Functional/FakeLogEntries.php b/web/core/modules/dblog/tests/src/Functional/FakeLogEntries.php
new file mode 100644 (file)
index 0000000..6927524
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+
+namespace Drupal\Tests\dblog\Functional;
+
+use Drupal\Core\Logger\RfcLogLevel;
+use Drupal\Core\Session\AnonymousUserSession;
+
+/**
+ * Provides methods to generate log entries.
+ *
+ * This trait is meant to be used only by test classes.
+ */
+trait FakeLogEntries {
+
+  /**
+   * Generates a number of random database log events.
+   *
+   * @param int $count
+   *   Number of watchdog entries to generate.
+   * @param array $options
+   *   These options are used to override the defaults for the test.
+   *   An associative array containing any of the following keys:
+   *   - 'channel': String identifying the log channel to be output to.
+   *     If the channel is not set, the default of 'custom' will be used.
+   *   - 'message': String containing a message to be output to the log.
+   *     A simple default message is used if not provided.
+   *   - 'variables': Array of variables that match the message string.
+   *   - 'severity': Log severity level as defined in logging_severity_levels.
+   *   - 'link': String linking to view the result of the event.
+   *   - 'user': String identifying the username.
+   *   - 'uid': Int identifying the user id for the user.
+   *   - 'request_uri': String identifying the location of the request.
+   *   - 'referer': String identifying the referring url.
+   *   - 'ip': String The ip address of the client machine triggering the log
+   *     entry.
+   *   - 'timestamp': Int unix timestamp.
+   */
+  private function generateLogEntries($count, $options = []) {
+    global $base_root;
+
+    $user = !empty($this->adminUser) ? $this->adminUser : new AnonymousUserSession();
+
+    // Prepare the fields to be logged.
+    $log = $options + [
+      'channel'     => 'custom',
+      'message'     => 'Dblog test log message',
+      'variables'   => [],
+      'severity'    => RfcLogLevel::NOTICE,
+      'link'        => NULL,
+      'user'        => $user,
+      'uid'         => $user->id(),
+      'request_uri' => $base_root . \Drupal::request()->getRequestUri(),
+      'referer'     => \Drupal::request()->server->get('HTTP_REFERER'),
+      'ip'          => '127.0.0.1',
+      'timestamp'   => REQUEST_TIME,
+    ];
+
+    $logger = $this->container->get('logger.dblog');
+    $message = $log['message'] . ' Entry #';
+    for ($i = 0; $i < $count; $i++) {
+      $log['message'] = $message . $i;
+      $logger->log($log['severity'], $log['message'], $log);
+    }
+  }
+
+}