You are here

public function AdminFunctionalityTest::testSchedulesAdmin in Backup and Migrate 5.0.x

Same name and namespace in other branches
  1. 8.4 tests/src/Functional/AdminFunctionalityTest.php \Drupal\Tests\backup_migrate\Functional\AdminFunctionalityTest::testSchedulesAdmin()

Make sure the 'schedules' system works correctly.

File

tests/src/Functional/AdminFunctionalityTest.php, line 279

Class

AdminFunctionalityTest
Checks if admin functionality works correctly.

Namespace

Drupal\Tests\backup_migrate\Functional

Code

public function testSchedulesAdmin() {

  // Load the schedule page.
  $this
    ->drupalGet('admin/config/development/backup_migrate/schedule');
  $session = $this
    ->assertSession();
  $session
    ->statusCodeEquals(200);
  $session
    ->pageTextContains('Schedule Name');
  $session
    ->pageTextContains('Enabled');
  $session
    ->pageTextContains('Frequency');
  $session
    ->pageTextContains('Last Run');
  $session
    ->pageTextContains('Next Run');
  $session
    ->pageTextContains('Keep');
  $session
    ->pageTextContains('Daily Schedule');
  $session
    ->pageTextContains('No');
  $session
    ->pageTextContains('Every 0 weeks');
  $session
    ->pageTextContains('Never');
  $session
    ->pageTextContains('Disabled');
  $session
    ->pageTextContains('Last backups');

  // @todo Confirm the table only has one record.
  // Edit an existing schedule - turn on the default schedule.
  $this
    ->drupalGet('admin/config/development/backup_migrate/schedule/edit/daily_schedule');
  $session = $this
    ->assertSession();
  $session
    ->statusCodeEquals(200);
  $session
    ->fieldExists('Schedule enabled');
  $edit = [
    'enabled' => TRUE,
    'period_number' => 1,
    'period_type' => 'days',
  ];
  $this
    ->submitForm($edit, 'Save');
  $session = $this
    ->assertSession();
  $session
    ->statusCodeEquals(200);
  $session
    ->pageTextContains('Saved the Daily Schedule Schedule.');
  $session
    ->pageTextContains('Yes');
  $session
    ->pageTextContains('Daily');
  $session
    ->pageTextContains('Never');
  $session
    ->pageTextContains('Next cron run');
  $session
    ->pageTextNotContains('Disabled');

  // Load the schedule-add form.
  $this
    ->drupalGet('admin/config/development/backup_migrate/schedule/add');
  $session = $this
    ->assertSession();
  $session
    ->statusCodeEquals(200);
  $session
    ->pageTextContains('Add schedule');
  $session
    ->fieldExists('label');
  $session
    ->fieldExists('id');
  $session
    ->fieldExists('enabled');
  $session
    ->fieldExists('source_id');
  $session
    ->fieldExists('destination_id');
  $session
    ->fieldExists('period_number');
  $session
    ->fieldExists('period_type');
  $session
    ->fieldExists('keep');
  $session
    ->buttonExists('Save');

  // Create a new schedule.
  $edit = [
    'label' => 'Test schedule',
    'id' => 'test_schedule',
    'enabled' => TRUE,
    'source_id' => 'default_db',
    'destination_id' => 'private_files',
    'period_number' => 14400,
    'period_type' => 'minutes',
    'keep' => 1000,
  ];
  $this
    ->submitForm($edit, 'Save');

  // Make sure the form saved correctly.
  $session = $this
    ->assertSession();
  $session
    ->statusCodeEquals(200);
  $session
    ->addressEquals('admin/config/development/backup_migrate/schedule');
  $session
    ->pageTextContains('Created the Test schedule Schedule.');
  $session
    ->pageTextContains('Every 10 days');
  $session
    ->pageTextContains('Last 1000 backups');
  $session
    ->pageTextContains('Yes');
}