You are here

public function LogActionsTest::testCloneMultipleLogs in Log entity 2.x

Tests cloning multiple logs.

File

tests/src/Functional/LogActionsTest.php, line 59

Class

LogActionsTest
Tests the Log form actions.

Namespace

Drupal\Tests\log\Functional

Code

public function testCloneMultipleLogs() {
  $timestamps = [];
  $expected_timestamps = [];
  $timestamp = \Drupal::time()
    ->getRequestTime();
  for ($i = 0; $i < 3; $i++) {
    $timestamp = strtotime('+1 day', $timestamp);
    $timestamps[] = $timestamp;
    $expected_timestamps[] = $timestamp;
    $log = $this
      ->createLogEntity([
      'name' => $this
        ->randomMachineName(),
      'created' => \Drupal::time()
        ->getRequestTime(),
      'done' => TRUE,
      'timestamp' => $timestamp,
    ]);
    $log
      ->save();
  }
  $num_of_logs = $this->storage
    ->getQuery()
    ->count()
    ->execute();
  $this
    ->assertEqual($num_of_logs, 3, 'There are three logs in the system.');
  $edit = [];
  $edit['action'] = 'log_clone_action';
  for ($i = 0; $i < 3; $i++) {
    $edit['log_bulk_form[' . $i . ']'] = TRUE;
  }
  $this
    ->drupalPostForm('admin/content/log', $edit, $this
    ->t('Apply to selected items'));
  $this
    ->assertResponse(200);
  $this
    ->assertText($this
    ->t('Are you sure you want to clone these logs?'));
  $this
    ->assertText($this
    ->t('New date'));
  $new_timestamp = strtotime(date('Y-n-j', strtotime('+1 day', $timestamp)));
  $edit_clone = [];
  $edit_clone['date[month]'] = date('n', $new_timestamp);
  $edit_clone['date[year]'] = date('Y', $new_timestamp);
  $edit_clone['date[day]'] = date('j', $new_timestamp);
  $this
    ->drupalPostForm(NULL, $edit_clone, $this
    ->t('Clone'));
  $this
    ->assertResponse(200);
  $this
    ->assertUrl('admin/content/log');
  $this
    ->assertText($this
    ->t('Cloned 3 logs'));
  $logs = $this->storage
    ->loadMultiple();
  $this
    ->assertEqual(count($logs), 6, 'There are six logs in the system.');
  for ($i = 1; $i <= 3; $i++) {
    $expected_timestamps[] = $new_timestamp;
  }
  $log_timestamps = [];
  foreach ($logs as $log) {
    $log_timestamps[] = $log
      ->get('timestamp')->value;
  }
  $this
    ->assertEqual($log_timestamps, $expected_timestamps, 'Timestamp on the new logs has been updated.');
}