1 layout.test LayoutInterfaceTest::testTaxonomyContext()

Tests Taxonomy contexts within layouts.

File

core/modules/layout/tests/layout.test, line 1866
Tests for the Layout module.

Class

LayoutInterfaceTest
Tests the interface for adding, removing, and moving blocks.

Code

function testTaxonomyContext() {
  module_enable(array('taxonomy'));

  // Create a default vocabulary named "Tags", enabled for the 'post' content type.
  $vocabulary = new TaxonomyVocabulary(array(
    'name' => 'Tags',
    'description' => 'Use tags to group posts on similar topics into categories.',
    'machine_name' => 'tags',
  ));
  taxonomy_vocabulary_save($vocabulary);

  $field = array(
    'field_name' => 'field_' . $vocabulary->machine_name,
    'type' => 'taxonomy_term_reference',
    // Set cardinality to unlimited for tagging.
    'cardinality' => FIELD_CARDINALITY_UNLIMITED,
    'settings' => array(
      'allowed_values' => array(
        array(
          'vocabulary' => $vocabulary->machine_name,
          'parent' => 0,
        ),
      ),
    ),
  );
  field_create_field($field);

  $instance = array(
    'field_name' => 'field_' . $vocabulary->machine_name,
    'entity_type' => 'node',
    'label' => 'Tags',
    'bundle' => 'post',
    'widget' => array(
      'type' => 'taxonomy_autocomplete',
    ),
  );
  field_create_instance($instance);

  // Make a new layout that creates a custom path with placeholders.
  $layout_title = $this->randomName();
  $layout_name = strtolower($layout_title);
  $layout_path = 'taxonomy/term/%';
  $edit = array(
    'title' => $layout_title,
    'name' => $layout_name,
    'layout_template' => 'moscone_flipped',
    'path' => $layout_path,
  );
  // Check the path first to populate available contexts.
  $this->backdropPost('admin/structure/layouts/add', $edit, t('Check path'));

  // Try to add a condition to the layout itself to only show on the Tag
  // vocabulary.
  $this->backdropPost(NULL, array(), t('Add condition'));

  $this->backdropPost(NULL, array('condition' => 'taxonomy_term_vocabulary'), t('Load condition'));
  $this->backdropPost(NULL, array('bundles[tags]' => TRUE), t('Add condition'));
  $this->backdropPost(NULL, array(), t('Create layout'));

  $this->assertText(t('Layout created. Blocks may now be added to this layout.'));
}