You are here

context.reactions.test in Context 7.3

Same filename and directory in other branches
  1. 6.3 tests/context.reactions.test
  2. 6 tests/context.reactions.test

File

tests/context.reactions.test
View source
<?php

class ContextReactionBlockTest extends DrupalWebTestCase {
  protected $profile = 'testing';
  public static function getInfo() {
    return array(
      'name' => 'Reaction: block',
      'description' => 'Test block reaction.',
      'group' => 'Context',
    );
  }
  function setUp() {
    parent::setUp('context', 'ctools', 'block');
    $admin_user = $this
      ->drupalCreateUser(array(
      'administer site configuration',
      'administer blocks',
    ));
    $this
      ->drupalLogin($admin_user);
  }
  function test() {
    ctools_include('export');
    $context = ctools_export_new_object('context');
    $context->name = 'testcontext';
    $context->conditions = array(
      'sitewide' => array(
        'values' => array(
          1,
        ),
      ),
    );
    $context->reactions = array(
      'block' => array(
        'blocks' => array(
          'user-online' => array(
            'module' => 'user',
            'delta' => 'online',
            'region' => 'sidebar_first',
            'weight' => 0,
          ),
        ),
      ),
    );
    $saved = context_save($context);
    $this
      ->assertTrue($saved, "Context 'testcontext' saved.");
    theme_enable(array(
      'bartik',
    ));
    variable_set('theme_default', 'bartik');
    $this
      ->refreshVariables();
    $this
      ->drupalGet('node');
    $this
      ->assertText('Who\'s online');

    // Test title override of code provided block
    $edit = array(
      'title' => 'Context Online Block',
    );
    $this
      ->drupalPost('admin/structure/block/manage/user/online/configure', $edit, t('Save block'));
    $this
      ->drupalPost('admin/config/development/performance', array(), t('Clear all caches'));
    $this
      ->drupalGet('node');
    $this
      ->assertText('Context Online Block');

    // Test title of custom block
    $edit = array(
      'info' => 'Context Custom Block Info',
      'title' => 'Context Custom Block Title',
      'body[value]' => $this
        ->randomName(32),
    );
    $this
      ->drupalPost('admin/structure/block/add', $edit, t('Save block'));
    $bid = db_query("SELECT bid FROM {block_custom} WHERE info = :info", array(
      ':info' => $edit['info'],
    ))
      ->fetchField();
    $context->reactions['block']['blocks']["block-{$bid}"] = array(
      'module' => 'block',
      'delta' => $bid,
      'region' => 'sidebar_first',
      'weight' => 2,
    );
    $saved = context_save($context);
    $this
      ->assertTrue($saved, "Context 'testcontext' saved.");
    $this
      ->drupalGet('node');
    $this
      ->assertText('Context Custom Block Title');

    // Cleanup
    context_delete($context);
  }

}
class ContextReactionBlockAjaxTest extends DrupalWebTestCase {
  protected $profile = 'testing';
  public static function getInfo() {
    return array(
      'name' => 'Reaction: block ajax',
      'description' => 'Test block reaction ajax behavior.',
      'group' => 'Context',
    );
  }
  function setUp() {
    parent::setUp('context', 'context_ui', 'ctools');
    $admin_user = $this
      ->drupalCreateUser(array(
      'context ajax block access',
    ));
    $this
      ->drupalLogin($admin_user);
  }
  function test() {
    $this
      ->drupalGet('node', array(
      'query' => array(
        'context_block' => 'user-online,testcontext',
      ),
    ));
    $this
      ->assertText('"status":1', 'Successful return status.');
    $this
      ->assertText('Who\\u0027s online', 'Expected text in block data.');
  }

}
class ContextReactionBlockAjaxAccessTest extends DrupalWebTestCase {
  protected $profile = 'testing';
  public static function getInfo() {
    return array(
      'name' => 'Reaction: block ajax access',
      'description' => 'Test block reaction ajax access behavior.',
      'group' => 'Context',
    );
  }
  function setUp() {
    parent::setUp('context', 'ctools');
    $admin_user = $this
      ->drupalCreateUser();
    $this
      ->drupalLogin($admin_user);
  }
  function test() {
    $this
      ->drupalGet('node', array(
      'query' => array(
        'context_block' => 'user-online,testcontext',
      ),
    ));
    $this
      ->assertText('"status":0', 'Failed return status.');
  }

}
class ContextReactionMenuTest extends DrupalWebTestCase {
  protected $profile = 'testing';
  public static function getInfo() {
    return array(
      'name' => 'Reaction: menu',
      'description' => 'Test menu reaction.',
      'group' => 'Context',
    );
  }
  function setUp() {
    parent::setUp('context', 'ctools', 'menu', 'blog');
    $admin_user = $this
      ->drupalCreateUser(array(
      'administer menu',
      'administer nodes',
      'administer site configuration',
      'create blog content',
    ));
    $this
      ->drupalLogin($admin_user);
  }
  function test() {
    ctools_include('export');
    $context = ctools_export_new_object('context');
    $context->name = 'testcontext';
    $context->conditions = array(
      'sitewide' => array(
        'values' => array(
          1,
        ),
      ),
    );
    $context->reactions = array(
      'menu' => 'node/add',
    );
    $saved = context_save($context);
    $this
      ->assertTrue($saved, "Context 'testcontext' saved.");
    $this
      ->drupalPost('admin/structure/menu/settings', array(
      'menu_main_links_source' => 'navigation',
    ), 'Save configuration');
    theme_enable(array(
      'bartik',
    ));
    variable_set('theme_default', 'bartik');
    $this
      ->refreshVariables();
    $output = $this
      ->drupalGet('user');
    $url = url('node/add');
    $active = $this
      ->xpath('//li[contains(@class, "active")]/a[@href="' . $url . '"]');
    $this
      ->assertTrue(!empty($active), t('Active menu item found.'));

    // Cleanup
    context_delete($context);
  }

}
class ContextReactionBreadcrumbTest extends DrupalWebTestCase {
  protected $profile = 'testing';
  public static function getInfo() {
    return array(
      'name' => 'Reaction: breadcrumb',
      'description' => 'Test breadcrumb reaction.',
      'group' => 'Context',
    );
  }
  function setUp() {
    parent::setUp('context', 'ctools');
    $admin_user = $this
      ->drupalCreateUser(array(
      'access administration pages',
      'administer nodes',
      'administer site configuration',
    ));
    $this
      ->drupalLogin($admin_user);
  }
  function test() {
    ctools_include('export');
    $context = ctools_export_new_object('context');
    $context->name = 'testcontext';
    $context->conditions = array(
      'path' => array(
        'values' => array(
          'node',
        ),
      ),
    );
    $context->reactions = array(
      'breadcrumb' => 'admin/structure',
    );
    $saved = context_save($context);
    $this
      ->assertTrue($saved, "Context 'testcontext' saved.");
    theme_enable(array(
      'bartik',
    ));
    variable_set('theme_default', 'bartik');
    $this
      ->refreshVariables();
    $output = $this
      ->drupalGet('node');
    $this
      ->assertText('Home » Administration » Structure');
    $output = $this
      ->drupalGet('user');
    $this
      ->assertNoText('Home » Administration » Structure');

    // Cleanup
    context_delete($context);
  }

}
class ContextReactionThemeHtmlTest extends DrupalWebTestCase {
  protected $profile = 'testing';
  public static function getInfo() {
    return array(
      'name' => 'Reaction: theme html',
      'description' => 'Test theme html reaction.',
      'group' => 'Context',
    );
  }
  function setUp() {
    parent::setUp('context', 'ctools');
    $admin_user = $this
      ->drupalCreateUser(array(
      'access administration pages',
      'administer nodes',
      'administer site configuration',
    ));
    $this
      ->drupalLogin($admin_user);
  }
  function test() {
    ctools_include('export');
    $context = ctools_export_new_object('context');
    $context->name = 'testcontext';
    $context->conditions = array(
      'sitewide' => array(
        'values' => array(
          1,
        ),
      ),
    );
    $context->reactions = array(
      'theme_html' => array(
        'class' => 'context-test-class',
      ),
    );
    $saved = context_save($context);
    $this
      ->assertTrue($saved, "Context 'testcontext' saved.");
    $output = $this
      ->drupalGet('node');
    $this
      ->assertRaw('context-test-class');

    // Cleanup
    context_delete($context);
  }

}
class ContextReactionRegionTest extends DrupalWebTestCase {
  protected $profile = 'testing';
  public static function getInfo() {
    return array(
      'name' => 'Reaction: Region',
      'description' => 'Test Region disable reaction.',
      'group' => 'Context',
    );
  }
  function setUp() {
    parent::setUp('context', 'ctools');
    $admin_user = $this
      ->drupalCreateUser(array(
      'access administration pages',
      'administer nodes',
      'administer site configuration',
    ));
    $this
      ->drupalLogin($admin_user);
  }
  function test() {
    ctools_include('export');
    theme_enable(array(
      'bartik',
    ));
    variable_set('theme_default', 'bartik');
    global $theme;
    $context = ctools_export_new_object('context');
    $context->name = 'testcontext';
    $context->conditions = array(
      'sitewide' => array(
        'values' => array(
          1,
        ),
      ),
    );
    $context->reactions = array(
      'block' => array(
        'blocks' => array(
          'user-online' => array(
            'module' => 'user',
            'delta' => 'online',
            'region' => 'sidebar_first',
            'weight' => '-10',
          ),
        ),
      ),
      'region' => array(
        'bartik' => array(
          'disable' => array(
            'sidebar_first' => 'sidebar_first',
          ),
        ),
      ),
    );
    $saved = context_save($context);
    $this
      ->assertTrue($saved, "Context 'testcontext' saved.");
    $output = $this
      ->drupalGet('node');
    $this
      ->assertNoText("Who's online");

    // Cleanup
    context_delete($context);
  }

}