You are here

function PanelizerAdminTest::testPanelizerAdminPages in Panelizer 7.3

Tests panelizer overview with different entities.

File

tests/panelizer.admin_settings.test, line 39
Test the admin functionality for Panelizer.

Class

PanelizerAdminTest
Test file administration page functionality.

Code

function testPanelizerAdminPages() {
  $this
    ->drupalGet('admin/structure/panelizer');
  $edit = array();
  $entity_plugins = panelizer_get_entity_plugins();
  foreach ($entity_plugins as $entity_type => $plugin) {
    $entity_info = entity_get_info($entity_type);
    if ($entity_info) {
      $bundles = $entity_info['bundles'];
      foreach ($bundles as $bundle => $info) {
        $this
          ->assertFieldByXPath('//input[@type="checkbox" and @name="entities[' . $entity_type . '][' . $bundle . '][0][status]"]', FALSE, t('The %bundle bundle of the %entity_type entity type can be panelized.', array(
          '%bundle' => $bundle,
          '%entity_type' => $entity_type,
        )));

        // Collect a list of all of the available entity types + bundles.
        $edit['entities[' . $entity_type . '][' . $bundle . '][0][status]'] = TRUE;
      }
    }
  }

  // Panelize all of the known entity types and their bundles.
  $this
    ->drupalPost('admin/structure/panelizer', $edit, t('Save'));

  // Reset the ctools plugins static cache to include the newly panelized
  // entity types.
  ctools_get_plugins_reset();
  $entity_plugins = panelizer_get_entity_plugins();
  foreach ($entity_plugins as $entity_type => $plugin) {
    $entity_info = entity_get_info($entity_type);
    if ($entity_info) {
      $bundles = $entity_info['bundles'];
      foreach ($bundles as $bundle => $info) {
        if (!empty($plugin['bundles'][$bundle]['status'])) {
          if (!empty($info['admin']['real path'])) {
            $this
              ->assertLinkByHref($info['admin']['real path'] . '/display', 0, t('A link to manage the display for the %bundle bundle of the %entity_type entity type appears on the page.', array(
              '%bundle' => $bundle,
              '%entity_type' => $entity_type,
            )));
          }
          $this
            ->assertLinkByHref('admin/structure/panelizer/' . $entity_type . '/' . $bundle . '/allowed', 0, t('A link to restrict the allowed content for the %bundle bundle of the %entity_type entity type appears on the page.', array(
            '%bundle' => $bundle,
            '%entity_type' => $entity_type,
          )));
        }
        foreach ($plugin['view modes'] as $view_mode => $view_mode_info) {

          // Automatically allow view modes that are part of Panels.
          if (isset($entity_info['view modes'][$view_mode])) {

            // Skip this view mode if it isn't enabled for this bundle.
            if (!empty($bundle)) {
              if (empty($view_mode_settings[$view_mode]['custom_settings'])) {
                continue;
              }
            }
            else {
              if (isset($entity_info['view modes'][$view_mode]['custom settings']) && empty($entity_info['view modes'][$view_mode]['custom settings'])) {
                continue;
              }
            }
          }
          if (isset($plugin['view mode status'][$bundle][$view_mode]) && empty($plugin['view mode status'][$bundle][$view_mode])) {

            // continue;
          }
          if (!empty($plugin['bundles'][$bundle]['view modes'][$view_mode]) && is_array($plugin['bundles'][$bundle]['view modes'][$view_mode])) {
            $settings = $plugin['bundles'][$bundle]['view modes'][$view_mode];
          }
          else {
            $settings = array(
              'status' => FALSE,
              'default' => FALSE,
              'choice' => FALSE,
            );
          }
          $this
            ->assertFieldByXPath('//input[@type="checkbox" and @name="entities[' . $entity_type . '][' . $bundle . '][' . $view_mode . '][status]"]', !empty($settings['status']), t('The %view_mode view mode of the %bundle bundle of the %entity_type entity type can be panelized.', array(
            '%view_mode' => $view_mode,
            '%bundle' => $bundle,
            '%entity_type' => $entity_type,
          )));
        }
      }
    }
  }
}