You are here

public function PanelizerDefaultsTest::test in Panelizer 8.5

Same name and namespace in other branches
  1. 8.3 src/Tests/PanelizerDefaultsTest.php \Drupal\Tests\panelizer\Functional\PanelizerDefaultsTest::test()
  2. 8.4 tests/src/Functional/PanelizerDefaultsTest.php \Drupal\Tests\panelizer\Functional\PanelizerDefaultsTest::test()

File

tests/src/Functional/PanelizerDefaultsTest.php, line 37

Class

PanelizerDefaultsTest
Confirm the defaults functionality works.

Namespace

Drupal\Tests\panelizer\Functional

Code

public function test() {
  $session = $this
    ->getSession();
  $page = $session
    ->getPage();
  $assert_session = $this
    ->assertSession();
  $account = $this
    ->createUser([
    'administer node display',
  ]);
  $this
    ->drupalLogin($account);

  // Get all enabled view modes machine names for page.
  $view_modes = array_keys(\Drupal::service('entity_display.repository')
    ->getViewModeOptionsByBundle('node', 'page'));
  foreach ($view_modes as $view_mode_name) {
    $this
      ->drupalGet("/admin/structure/types/manage/page/display/{$view_mode_name}");
    $assert_session
      ->statusCodeEquals(200);

    // Enable Panelizer via the API, and assert that the checkboxes are
    // present and have the expected states.
    $this->container
      ->get('panelizer')
      ->setPanelizerSettings('node', 'page', $view_mode_name, [
      'enable' => TRUE,
      'allow' => TRUE,
      'custom' => TRUE,
      'default' => 'default',
    ]);
    $session
      ->reload();
    $assert_session
      ->statusCodeEquals(200);
    $assert_session
      ->checkboxChecked('panelizer[enable]');
    $assert_session
      ->checkboxChecked('panelizer[allow]');
    $assert_session
      ->checkboxChecked('panelizer[custom]');

    // Disable customization and assert that it can no longer be re-enabled
    // in the UI.
    $page
      ->uncheckField('panelizer[custom]');
    $page
      ->pressButton('Save');
    $assert_session
      ->statusCodeEquals(200);
    $assert_session
      ->checkboxChecked('panelizer[enable]');
    $assert_session
      ->checkboxChecked('panelizer[allow]');
    $assert_session
      ->fieldNotExists('panelizer[custom]');

    // Disable Panelizer and assert that it cannot be re-enabled in the UI.
    $page
      ->uncheckField('panelizer[enable]');
    $page
      ->pressButton('Save');
    $assert_session
      ->statusCodeEquals(200);
    $assert_session
      ->fieldNotExists('panelizer[enable]');
    $assert_session
      ->fieldNotExists('panelizer[allow]');
    $assert_session
      ->fieldNotExists('panelizer[custom]');
  }
}