You are here

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

Tests rescheduling a single log to an relative date.

File

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

Class

LogActionsTest
Tests the Log form actions.

Namespace

Drupal\Tests\log\Functional

Code

public function testRescheduleSingleLogRelative() {
  $timestamp = \Drupal::time()
    ->getRequestTime();
  $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, 1, 'There is one log in the system.');
  $edit = [];
  $edit['action'] = 'log_reschedule_action';
  $edit['log_bulk_form[0]'] = 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 reschedule this log?'));
  $this
    ->assertText($this
    ->t('New date'));
  $edit_reschedule = [];
  $edit_reschedule['type_of_date'] = 1;
  $this
    ->drupalPostForm(NULL, $edit_reschedule, $this
    ->t('Reschedule'));
  $this
    ->assertResponse(200);
  $this
    ->assertUrl('admin/content/log/reschedule');
  $this
    ->assertText($this
    ->t('Please enter the amount of time for rescheduling.'));
  $new_timestamp = strtotime('+1 day', $timestamp);
  $edit_reschedule = [];
  $edit_reschedule['type_of_date'] = 1;
  $edit_reschedule['amount'] = 1;
  $edit_reschedule['time'] = 'day';
  $this
    ->drupalPostForm(NULL, $edit_reschedule, $this
    ->t('Reschedule'));
  $this
    ->assertResponse(200);
  $this
    ->assertUrl('admin/content/log');
  $this
    ->assertText($this
    ->t('Rescheduled 1 log'));
  $logs = $this->storage
    ->loadMultiple();
  $this
    ->assertEqual($num_of_logs, 1, 'There is one log in the system.');
  $log = reset($logs);
  $this
    ->assertEqual($log
    ->get('timestamp')->value, $new_timestamp, 'Timestamp on the log has changed.');
  $this
    ->assertEqual($log
    ->get('status')->value, 'pending', 'Log has been set to pending.');
}