| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561 | <?phpclass ContextConditionUserTest extends DrupalWebTestCase {  protected $profile = 'testing';  public static function getInfo() {    return array(      'name' => 'Condition: user',      'description' => 'Test user condition.',      'group' => 'Context',    );  }  function setUp() {    parent::setUp('context', 'ctools');    $this->user1 = $this->drupalCreateUser(array('access content', 'administer site configuration'));    $this->user2 = $this->drupalCreateUser(array('access content'));    // The role name is not reliably put on the user object. Retrive from    // user_roles().    $role = '';    foreach (array_keys($this->user1->roles) as $rid) {      if ($rid !== DRUPAL_AUTHENTICATED_RID) {        $role = user_role_load($rid)->name;        break;      }    }    // Create test context.    ctools_include('export');    $this->context = ctools_export_new_object('context');    $this->context->name = 'testcontext';    $this->context->conditions = array('user' => array('values' => array($role)));    $this->context->reactions = array('debug' => array('debug' => TRUE));    $saved = context_save($this->context);    $this->assertTrue($saved, "Context 'testcontext' saved.");  }  function tearDown() {    parent::tearDown();    context_delete($this->context);    user_delete($this->user1->uid);    user_delete($this->user2->uid);  }  function test() {    // User 1 triggers the context.    $this->drupalLogin($this->user1);    $this->drupalGet('node');    $this->assertText('Active context: testcontext');    // User 2 does not.    $this->drupalLogin($this->user2);    $this->drupalGet('node');    $this->assertNoText('Active context: testcontext');  }}class ContextConditionUserPageTest extends DrupalWebTestCase {  protected $profile = 'testing';  public static function getInfo() {    return array(      'name' => 'Condition: user page',      'description' => 'Test user page condition.',      'group' => 'Context',    );  }  function setUp() {    parent::setUp('context', 'ctools');    $this->user1 = $this->drupalCreateUser(array('access user profiles', 'access content', 'administer site configuration'));    $this->user2 = $this->drupalCreateUser(array('access user profiles', 'access content'));    // Create test context.    ctools_include('export');    $this->context = ctools_export_new_object('context');    $this->context->name = 'testcontext';    $this->context->conditions = array('user_page' => array('values' => array('view' => 'view'), 'options' => array('mode' => 'all')));    $this->context->reactions = array('debug' => array('debug' => TRUE));    $saved = context_save($this->context);    $this->assertTrue($saved, "Context 'testcontext' saved.");  }  function tearDown() {    parent::tearDown();    context_delete($this->context);    $edit = array();    user_delete($this->user1->uid);    user_delete($this->user2->uid);  }  function test() {    // Viewing any user profile triggers context.    $this->drupalLogin($this->user1);    $this->drupalGet("user/{$this->user1->uid}");    $this->assertText('Active context: testcontext');    $this->drupalGet("user/{$this->user2->uid}");    $this->assertText('Active context: testcontext');    // User form does not.    $this->drupalGet("user/{$this->user1->uid}/edit");    $this->assertNoText('Active context: testcontext');    // Test current user mode    $this->context->conditions['user_page']['options']['mode'] = 'current';    $saved = context_save($this->context);    $this->assertTrue($saved, "Context 'testcontext' saved.");    $this->drupalGet("user/{$this->user1->uid}");    $this->assertText('Active context: testcontext');    $this->drupalGet("user/{$this->user2->uid}");    $this->assertNoText('Active context: testcontext');    // Test other user mode    $this->context->conditions['user_page']['options']['mode'] = 'other';    $saved = context_save($this->context);    $this->assertTrue($saved, "Context 'testcontext' saved.");    $this->drupalGet("user/{$this->user1->uid}");    $this->assertNoText('Active context: testcontext');    $this->drupalGet("user/{$this->user2->uid}");    $this->assertText('Active context: testcontext');  }}class ContextConditionNodeTaxonomyTest extends DrupalWebTestCase {  // We want the default taxonomy and content types created  protected $profile = 'standard';  public static function getInfo() {    return array(      'name' => 'Condition: taxonomy',      'description' => 'Test taxonomy condition.',      'group' => 'Context',    );  }  function setUp() {    parent::setUp('context', 'ctools', 'taxonomy');    $admin_user = $this->drupalCreateUser(array('administer site configuration', 'create article content'));    $this->drupalLogin($admin_user);    // Create test terms.    $this->vocab = taxonomy_vocabulary_machine_name_load('tags');    $this->terms = array();    $this->terms['apples'] = (object)array('name' => 'apples', 'vid' => $this->vocab->vid);    $this->terms['oranges'] = (object)array('name' => 'oranges', 'vid' => $this->vocab->vid);    taxonomy_term_save($this->terms['apples']);    taxonomy_term_save($this->terms['oranges']);    // Create test context.    ctools_include('export');    $this->context = ctools_export_new_object('context');    $this->context->name = 'testcontext';    $this->context->conditions = array('node_taxonomy' => array('values' => array($this->terms['apples']->tid)));    $this->context->reactions = array('debug' => array('debug' => TRUE));    $saved = context_save($this->context);    $this->assertTrue($saved, "Context 'testcontext' saved.");  }  function tearDown() {    parent::tearDown();    context_delete($this->context);    taxonomy_term_delete($this->terms['apples']->tid);    taxonomy_term_delete($this->terms['oranges']->tid);  }  function test() {    // Apples does trigger the context.    $edit = array(      'title' => 'Apples',       'field_tags[und]' => $this->terms['apples']->name    );    $this->drupalPost('node/add/article', $edit, t('Save'));    $node = $this->drupalGetNodeByTitle($edit['title']);    $this->drupalGet('node/' . $node->nid);    $this->assertText('Active context: testcontext');    // Oranges does not trigger the context.    $edit = array(      'title' => 'Oranges',       'field_tags[und]' => $this->terms['oranges']->name    );    $this->drupalPost('node/add/article', $edit, t('Save'));    $node = $this->drupalGetNodeByTitle($edit['title']);    $this->drupalGet('node/' . $node->nid);    $this->assertNoText('Active context: testcontext');  }}class ContextConditionLanguageTest extends DrupalWebTestCase {  protected $profile = 'testing';  public static function getInfo() {    return array(      'name' => 'Condition: language',      'description' => 'Test language condition.',      'group' => 'Context',    );  }  function setUp() {    parent::setUp('context', 'ctools', 'locale');    $admin_user = $this->drupalCreateUser(array('administer site configuration', 'administer languages'));    $this->drupalLogin($admin_user);    $this->drupalPost('admin/config/development/performance', array(), t('Clear all caches'));    // Set up Spanish as second language.    $this->drupalPost('admin/config/regional/language/add', array('langcode' => 'es'), t('Add language'));    $this->drupalPost('admin/config/regional/language/configure', array('language[enabled][locale-url]' => 1), t('Save settings'));  }  function test() {    ctools_include('export');    $context = ctools_export_new_object('context');    $context->name = 'testcontext';    $context->conditions = array('language' => array('values' => array('es')));    $context->reactions = array('debug' => array('debug' => TRUE));    $saved = context_save($context);    $this->assertTrue($saved, "Context 'testcontext' saved.");    $this->drupalGet('node');    $this->assertNoText('Active context: testcontext');    $this->drupalGet('es/node');    $this->assertText('Active context: testcontext');    // Cleanup    context_delete($context);  }}class ContextConditionSitewideTest extends DrupalWebTestCase {  protected $profile = 'testing';  public static function getInfo() {    return array(      'name' => 'Condition: sitewide',      'description' => 'Test sitewide condition.',      'group' => 'Context',    );  }  function setUp() {    parent::setUp('context', 'ctools');    $admin_user = $this->drupalCreateUser(array('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('debug' => array('debug' => TRUE));    $saved = context_save($context);    $this->assertTrue($saved, "Context 'testcontext' saved.");    $this->drupalGet('node');    $this->assertText('Active context: testcontext');    // Cleanup    context_delete($context);  }}class ContextConditionPathTest extends DrupalWebTestCase {  protected $profile = 'testing';  public static function getInfo() {    return array(      'name' => 'Condition: path',      'description' => 'Test path condition.',      'group' => 'Context',    );  }  function setUp() {    parent::setUp('context', 'ctools', 'path');    $admin_user = $this->drupalCreateUser(array('administer site configuration', 'administer nodes'));    $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('admin', 'node/*')));    $context->reactions = array('debug' => array('debug' => TRUE));    $saved = context_save($context);    $this->assertTrue($saved, "Context 'testcontext' saved.");    $this->drupalGet('admin');    $this->assertText('Active context: testcontext');    $node = $this->drupalCreateNode();    $this->drupalGet("node/{$node->nid}");    $this->assertText('Active context: testcontext');    $this->drupalGet('node');    $this->assertNoText('Active context: testcontext');    // Cleanup    context_delete($context);    // @TODO: Test with path alias    // @TODO: Test with language prefixes  }}class ContextConditionContextTest extends DrupalWebTestCase {  protected $profile = 'testing';  public static function getInfo() {    return array(      'name' => 'Condition: context',      'description' => 'Test context condition.',      'group' => 'Context',    );  }  function setUp() {    parent::setUp('context', 'ctools');    $admin_user = $this->drupalCreateUser(array('administer site configuration', 'administer nodes'));    $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('admin')));    $context->reactions = array('debug' => array('debug' => TRUE));    $saved = context_save($context);    $this->assertTrue($saved, "Context 'testcontext' saved.");    $subcontext = ctools_export_new_object('context');    $subcontext->name = 'subcontext';    $subcontext->conditions = array('context' => array('values' => array('testcontext')));    $subcontext->reactions = array('debug' => array('debug' => TRUE));    $saved = context_save($subcontext);    $this->assertTrue($saved, "Context 'subcontext' saved.");    $this->drupalGet('admin');    $this->assertText('Active context: testcontext');    $this->assertText('Active context: subcontext');    // Cleanup    context_delete($context);    // @TODO: Test exclusion  }}class ContextConditionNodeTest extends DrupalWebTestCase {  protected $profile = 'testing';  public static function getInfo() {    return array(      'name' => 'Condition: node',      'description' => 'Test node condition.',      'group' => 'Context',    );  }  function setUp() {    parent::setUp('context', 'ctools', 'blog', 'book');    $admin_user = $this->drupalCreateUser(array(      'administer site configuration',      'administer nodes',      'create blog content',      'create book content'    ));    $this->drupalLogin($admin_user);  }  function test() {    ctools_include('export');    $context = ctools_export_new_object('context');    $context->name = 'testcontext';    $context->conditions = array('node' => array('values' => array('blog')));    $context->reactions = array('debug' => array('debug' => TRUE));    $saved = context_save($context);    $this->assertTrue($saved, "Context 'testcontext' saved.");    $this->drupalGet("node/add/blog");    $this->assertNoText('Active context: testcontext');    $this->drupalGet("node/add/book");    $this->assertNoText('Active context: testcontext');    $node = $this->drupalCreateNode(array('type' => 'blog'));    $this->drupalGet("node/{$node->nid}");    $this->assertText('Active context: testcontext');    $node = $this->drupalCreateNode(array('type' => 'book'));    $this->drupalGet("node/{$node->nid}");    $this->assertNoText('Active context: testcontext');    $context->conditions['node']['options']['node_form'] = 1;    $saved = context_save($context);    $this->assertTrue($saved, "Context 'testcontext' saved.");    $this->drupalGet("node/add/blog");    $this->assertText('Active context: testcontext');    $this->drupalGet("node/add/book");    $this->assertNoText('Active context: testcontext');    // Cleanup    context_delete($context);  }}class ContextConditionMenuTest extends DrupalWebTestCase {  protected $profile = 'testing';  public static function getInfo() {    return array(      'name' => 'Condition: menu',      'description' => 'Test menu condition.',      'group' => 'Context',    );  }  function setUp() {    parent::setUp('context', 'ctools', 'blog', 'menu');    $admin_user = $this->drupalCreateUser(array('administer site configuration', 'administer nodes', 'create blog content'));    $this->drupalLogin($admin_user);  }  function test() {    ctools_include('export');    $context = ctools_export_new_object('context');    $context->name = 'testcontext';    $context->conditions = array('menu' => array('values' => array('node/add')));    $context->reactions = array('debug' => array('debug' => TRUE));    $saved = context_save($context);    $this->assertTrue($saved, "Context 'testcontext' saved.");    $this->drupalGet("node/add/blog");    $this->assertText('Active context: testcontext');    $this->drupalGet("node/add");    $this->assertText('Active context: testcontext');    $this->drupalGet("node");    $this->assertNoText('Active context: testcontext');    // Cleanup    context_delete($context);  }}class ContextConditionBookTest extends DrupalWebTestCase {  protected $profile = 'testing';  public static function getInfo() {    return array(      'name' => 'Condition: book',      'description' => 'Test book condition.',      'group' => 'Context',    );  }  function setUp() {    parent::setUp('context', 'ctools', 'book', 'menu');    $admin_user = $this->drupalCreateUser(array('administer site configuration', 'administer nodes'));    $this->drupalLogin($admin_user);  }  function test() {    $book = $this->drupalCreateNode(array('type' => 'book', 'book' => array('bid' => 'new')));    $child = $this->drupalCreateNode(array('type' => 'book', 'book' => array('bid' => $book->nid)));    $dummy = $this->drupalCreateNode(array('type' => 'book'));    ctools_include('export');    $context = ctools_export_new_object('context');    $context->name = 'testcontext';    $context->conditions = array('book' => array('values' => array(book_menu_name($book->book['bid']))));    $context->reactions = array('debug' => array('debug' => TRUE));    $saved = context_save($context);    $this->assertTrue($saved, "Context 'testcontext' saved.");    $this->drupalGet("node/{$book->nid}");    $this->assertText('Active context: testcontext');    $this->drupalGet("node/{$child->nid}");    $this->assertText('Active context: testcontext');    $this->drupalGet("node/{$dummy->nid}");    $this->assertNoText('Active context: testcontext');    // Cleanup    context_delete($context);  }}class ContextConditionBookroot extends DrupalWebTestCase {  protected $profile = 'testing';  public static function getInfo() {    return array(      'name' => 'Condition: bookroot',      'description' => 'Test bookroot condition.',      'group' => 'Context',    );  }  function setUp() {    parent::setUp('context', 'ctools', 'book', 'menu');    $admin_user = $this->drupalCreateUser(array(      'administer site configuration',      'administer nodes',      'create book content',      'edit any book content',    ));    $this->drupalLogin($admin_user);    variable_set('book_allowed_types', array('book', 'page'));  }  function test() {    $book = $this->drupalCreateNode(array('type' => 'book', 'book' => array('bid' => 'new')));    $child = $this->drupalCreateNode(array('type' => 'book', 'book' => array('bid' => $book->nid)));    $dummy = $this->drupalCreateNode(array('type' => 'page', 'book' => array('bid' => 'new')));    $dummy_child = $this->drupalCreateNode(array('type' => 'page', 'book' => array('bid' => $dummy->nid)));    ctools_include('export');    $context = ctools_export_new_object('context');    $context->name = 'testcontext';    $context->conditions = array('bookroot' => array('values' => array('book')));    $context->reactions = array('debug' => array('debug' => TRUE));    $saved = context_save($context);    $this->assertTrue($saved, "Context 'testcontext' saved.");    $this->drupalGet("node/{$book->nid}");    $this->assertText('Active context: testcontext');    $this->drupalGet("node/{$child->nid}");    $this->assertText('Active context: testcontext');    $this->drupalGet("node/{$dummy->nid}");    $this->assertNoText('Active context: testcontext');    $this->drupalGet("node/{$dummy_child->nid}");    $this->assertNoText('Active context: testcontext');    $this->drupalGet("node/{$book->nid}/edit");    $this->assertNoText('Active context: testcontext');    $context->conditions['bookroot']['options']['node_form'] = 1;    $saved = context_save($context);    $this->assertTrue($saved, "Context 'testcontext' saved.");    $this->drupalGet("node/{$book->nid}/edit");    $this->assertText('Active context: testcontext');    // Cleanup    context_delete($context);  }}
 |