You are here

public function PanelizerDefaultsTest::test in Panelizer 8.4

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

File

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

Class

PanelizerDefaultsTest
Confirm the defaults functionality works.

Namespace

Drupal\Tests\panelizer\Functional

Code

public function test() {
  $this
    ->setupContentType();
  $this
    ->loginUser1();

  // 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 $i => $view_mode_name) {

    // Be sure view mode can be panelized.
    $this
      ->panelize('page', $view_mode_name);

    // Create an additional default layout so we can assert that it's available
    // as an option when choosing the layout on the node form.
    $panelizer_id = $this
      ->addPanelizerDefault('page', $view_mode_name);
    $this
      ->assertDefaultExists('page', $view_mode_name, $panelizer_id);

    // The user should only be able to choose the layout if specifically allowed
    // to (the panelizer[allow] checkbox in the view display configuration). By
    // default, they aren't.
    $this
      ->drupalGet('node/add/page');
    $this
      ->assertResponse(200);
    $this
      ->assertNoFieldByName("panelizer['{$i}][default]");

    // Allow user to select panelized modes in UI.
    $this
      ->panelize('page', $view_mode_name, [
      'panelizer[custom]' => TRUE,
      'panelizer[allow]' => TRUE,
    ]);
    $this
      ->drupalGet('node/add/page');
    $this
      ->assertResponse(200);
    $this
      ->assertFieldByName("panelizer[{$i}][default]");
    $this
      ->assertOption("edit-panelizer-{$i}-default", 'default');
    $this
      ->assertOption("edit-panelizer-{$i}-default", $panelizer_id);

    // Clean up.
    $this
      ->deletePanelizerDefault('page', $view_mode_name, $panelizer_id);
    $this
      ->assertDefaultNotExists('page', $view_mode_name, $panelizer_id);
  }
}