You are here

themekey.test in ThemeKey 7.3

Same filename and directory in other branches
  1. 7 tests/themekey.test
  2. 7.2 tests/themekey.test

Implements tests for the theme switching rules.

File

tests/themekey.test
View source
<?php

/**
 * @file
 * Implements tests for the theme switching rules.
 */
class ThemekeyWebTestCase extends DrupalWebTestCase {

  /**
   * @var stdClass
   *   drupal user with permission to administer ThemeKey.
   */
  protected $privileged_user;

  /**
   * @var int
   *   contains the rule id of the rule created by the last call to
   *   ThemekeyWebTestCase::addThemeKeyRule().
   */
  public $last_rule_id;
  public function setUp() {
    $modules = func_get_args();
    if (empty($modules)) {
      $modules = array();
    }
    else {
      $modules = $modules[0];
    }
    $modules = array_unique(array_merge(array(
      'themekey_simpletest',
      'themekey',
      'themekey_compat',
      'themekey_ui',
      'themekey_debug',
    ), $modules));
    parent::setUp($modules);
    $this->privileged_user = $this
      ->drupalCreateUser(array(
      'administer theme assignments',
      'administer themekey settings',
    ));
    $this
      ->drupalLogin($this->privileged_user);
    theme_enable(array(
      'garland',
      'seven',
    ));
  }
  public function simplePropertyTest($property, $operator, $value, $url = array()) {
    debug($property . $operator . $value, 'Testing Rule');
    $url += array(
      'path' => '<front>',
      'options' => array(),
    );

    // load page
    $this
      ->drupalGet($url['path'], $url['options']);

    // theme is bartik
    $this
      ->assertTheme('bartik');

    // create ThemeKey Rule
    $this
      ->addThemeKeyRule($property, $operator, $value, 'garland');

    // load page
    $this
      ->drupalGet($url['path'], $url['options']);

    // theme is garland
    $this
      ->assertTheme('garland');
  }
  public function assertTheme($theme) {
    $this
      ->assertRaw('themes/' . $theme, 'current theme is ' . $theme);
  }
  public function addThemeKeyRule($property, $operator, $value, $theme, $enabled = '1', $wildcard = '', $parent = 0) {
    $edit = array(
      'new_item[property]' => $property,
      'new_item[wildcard]' => $wildcard,
      'new_item[operator]' => $operator,
      'new_item[value]' => $value,
      'new_item[theme]' => $theme,
      'new_item[enabled]' => $enabled,
    );
    $this
      ->drupalPost('admin/config/user-interface/themekey/properties', $edit, t('Save configuration'));
    foreach (array_reverse(themekey_load_rules()) as $rule) {
      if (($rule['property'] == $property || !empty($wildcard) && $rule['property'] == $wildcard) && $rule['operator'] == $operator && $rule['value'] == $value && $rule['theme'] == $theme && $rule['enabled'] == $enabled) {
        $this->last_rule_id = $rule['id'];
        break;
      }
    }
    if ($parent) {
      $edit = array(
        'old_items[' . $this->last_rule_id . '][parent]' => $parent,
      );
      $this
        ->drupalPost('admin/config/user-interface/themekey/properties', $edit, t('Save configuration'));
    }
  }

}

Classes

Namesort descending Description
ThemekeyWebTestCase @file Implements tests for the theme switching rules.