Index: pathauto.test
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pathauto/pathauto.test,v
retrieving revision 1.1.2.11
diff -u -p -r1.1.2.11 pathauto.test
--- pathauto.test	27 Sep 2010 15:52:58 -0000	1.1.2.11
+++ pathauto.test	17 Dec 2010 19:40:04 -0000
@@ -12,25 +12,26 @@
  * Helper test class with some added functions for testing.
  */
 class PathautoTestHelper extends DrupalWebTestCase {
-  function setUp() {
-    $args = func_get_args();
-
-    // Call parent::setUp() allowing test cases to pass further modules.
-    $modules = array('path', 'token', 'pathauto');
-    if (isset($args[0]) && is_array($args[0])) {
-      $modules = array_merge($modules, $args[0]);
-    }
+  function setUp(array $modules = array()) {
+    $modules[] = 'path';
+    $modules[] = 'token';
+    $modules[] = 'pathauto';
+    parent::setUp($modules);
 
-    $parent_callback = 'parent::setUp';
-    if (version_compare(PHP_VERSION, '5.3.0', '<')) {
-      $parent_callback = array($this, 'parent::setUp');
-    }
-    call_user_func_array($parent_callback, $modules);
+    // Clear some static caches.
+    pathauto_pattern_load_by_entity('', '', '', TRUE);
   }
 
   function assertToken($type, $object, $token, $expected) {
-    $tokens = pathauto_get_placeholders($type, $object);
-    $this->assertEqual($tokens['values'][$token], $expected, t("Token value for [@token] was '!actual', expected value '!expected'.", array('@token' => $token, '!actual' => $tokens['values'][$token], '!expected' => $expected)));
+    $this->assertTokens($type, $object, array($token => $expected));
+  }
+
+  function assertTokens($type, $object, array $tokens) {
+    $values = pathauto_get_placeholders($type, $object);
+    $values = $values['values'];
+    foreach ($tokens as $token => $expected) {
+      $this->assertIdentical($values[$token], $expected, t("Token value for [@token] was '@actual', expected value '@expected'.", array('@token' => $token, '@actual' => $values[$token], '@expected' => $expected)));
+    }
   }
 
   function saveAlias($source, $alias, $language = '') {
@@ -182,8 +183,8 @@ class PathautoUnitTestCase extends Patha
     );
   }
 
-  function setUp() {
-    parent::setUp();
+  function setUp(array $modules = array()) {
+    parent::setUp($modules);
     module_load_include('inc', 'pathauto');
   }
 
@@ -328,14 +329,7 @@ class PathautoUnitTestCase extends Patha
 class PathautoFunctionalTestHelper extends PathautoTestHelper {
   protected $admin_user;
 
-  function setUp() {
-    $args = func_get_args();
-
-    // Call parent::setUp() allowing test cases to pass further modules.
-    $modules = array();
-    if (isset($args[0]) && is_array($args[0])) {
-      $modules = array_merge($modules, $args[0]);
-    }
+  function setUp(array $modules = array()) {
     parent::setUp($modules);
 
     // Set pathauto settings we assume to be as-is in this test.
@@ -349,6 +343,7 @@ class PathautoFunctionalTestHelper exten
       'administer nodes',
       'administer users',
     );
+    $args = func_get_args();
     if (isset($args[1]) && is_array($args[1])) {
       $permissions = array_merge($permissions, $args[1]);
     }
@@ -367,6 +362,7 @@ class PathautoFunctionalTestCase extends
       'name' => 'Pathauto basic tests',
       'description' => 'Test basic pathauto functionality.',
       'group' => 'Pathauto',
+      'dependencies' => array('token'),
     );
   }
 
@@ -508,11 +504,14 @@ class PathautoLocaleTestCase extends Pat
       'name' => 'Pathauto localization tests',
       'description' => 'Test pathauto functionality with localization and translation.',
       'group' => 'Pathauto',
+      'dependencies' => array('token'),
     );
   }
 
-  function setUp() {
-    parent::setUp(array('locale', 'translation'), array('administer languages'));
+  function setUp(array $modules = array()) {
+    $modules[] = 'locale';
+    $modules[] = 'translation';
+    parent::setUp($modules, array('administer languages'));
 
     // Add predefined French language and reset the locale cache.
     require_once './includes/locale.inc';
@@ -564,11 +563,14 @@ class PathautoBookTokenTestCase extends 
       'name' => 'Pathauto book tokens',
       'description' => 'Unit tests for the book tokens provided by Pathauto.',
       'group' => 'Pathauto',
+      'dependencies' => array('token'),
     );
   }
 
-  function setUp() {
-    parent::setUp(array('book'));
+  function setUp(array $modules = array()) {
+    $modules[] = 'book';
+    parent::setUp($modules);
+
     variable_set('book_allowed_types', array('book', 'page'));
     variable_set('pathauto_node_book_pattern', '[bookpathalias]/[title-raw]');
   }
@@ -579,20 +581,57 @@ class PathautoBookTokenTestCase extends 
     $this->assertToken('node', $non_book_node, 'bookpathalias', '');
 
     // Add a root book page.
-    $parent_node = $this->drupalCreateNode(array('type' => 'book', 'title' => 'Root', 'book' => array('bid' => 'new')));
-    $this->assertToken('node', $parent_node, 'bookpathalias', '');
+    $parent_node = $this->drupalCreateNode(array(
+      'type' => 'book',
+      'title' => 'Root',
+      'book' => array('bid' => 'new') + _book_link_defaults('new'),
+    ));
+    $tokens = array(
+      'bookpathalias' => '',
+    );
+    $this->assertTokens('node', $parent_node, $tokens);
 
     // Add a first child page.
-    $child_node1 = $this->drupalCreateNode(array('type' => 'book', 'title' => 'Sub page1', 'book' => array('bid' => $parent_node->book['bid'], 'plid' => $parent_node->book['mlid'])));
-    $this->assertToken('node', $child_node1, 'bookpathalias', 'root');
+    $child_node1 = $this->drupalCreateNode(array(
+      'type' => 'book',
+      'title' => 'Sub page1',
+      'book' => array(
+        'bid' => $parent_node->book['bid'],
+        'plid' => $parent_node->book['mlid'],
+      ) + _book_link_defaults('new'),
+    ));
+    $tokens = array(
+      'bookpathalias' => 'root',
+    );
+    $this->assertTokens('node', $child_node1, $tokens);
 
     // Add a second child page.
-    $child_node2 = $this->drupalCreateNode(array('type' => 'book', 'title' => 'Sub page2', 'book' => array('bid' => $parent_node->book['bid'], 'plid' => $parent_node->book['mlid'])));
-    $this->assertToken('node', $child_node2, 'bookpathalias', 'root');
+    $child_node2 = $this->drupalCreateNode(array(
+      'type' => 'book',
+      'title' => 'Sub page2',
+      'book' => array(
+        'bid' => $parent_node->book['bid'],
+        'plid' => $parent_node->book['mlid'],
+      ) + _book_link_defaults('new'),
+    ));
+    $tokens = array(
+      'bookpathalias' => 'root',
+    );
+    $this->assertTokens('node', $child_node2, $tokens);
 
     // Add a child page on an existing child page.
-    $sub_child_node1 = $this->drupalCreateNode(array('type' => 'book', 'title' => 'Sub-sub Page1', 'book' => array('bid' => $parent_node->book['bid'], 'plid' => $child_node1->book['mlid'])));
-    $this->assertToken('node', $sub_child_node1, 'bookpathalias', 'root/sub-page1');
+    $sub_child_node1 = $this->drupalCreateNode(array(
+      'type' => 'book',
+      'title' => 'Sub-sub Page1',
+      'book' => array(
+        'bid' => $parent_node->book['bid'],
+        'plid' => $child_node1->book['mlid'],
+      ) + _book_link_defaults('new'),
+    ));
+    $tokens = array(
+      'bookpathalias' => 'root/sub-page1',
+    );
+    $this->assertTokens('node', $sub_child_node1, $tokens);
 
     // Test that path tokens should not be altered.
     $this->saveEntityAlias('node', $child_node1, 'My Crazy/Alias/');
@@ -612,11 +651,14 @@ class PathautoTaxonomyTokenTestCase exte
       'name' => 'Pathauto taxonomy tokens',
       'description' => 'Unit tests for the taxonomy tokens provided by Pathauto.',
       'group' => 'Pathauto',
+      'dependencies' => array('token'),
     );
   }
 
-  function setUp() {
-    parent::setUp(array('taxonomy'));
+  function setUp(array $modules = array()) {
+    $modules[] = 'taxonomy';
+    parent::setUp($modules);
+
     variable_set('pathauto_taxonomy_pattern', 'category/[vocab-raw]/[cat-raw]');
     // Reset the static taxonomy.module caches.
     taxonomy_vocabulary_load(0, TRUE);
@@ -629,8 +671,11 @@ class PathautoTaxonomyTokenTestCase exte
    */
   function testCatTokens() {
     $term1 = $this->addTerm($this->vocab);
-    $this->assertToken('taxonomy', $term1, 'catpath', $term1->name);
-    $this->assertToken('taxonomy', $term1, 'catalias', "category/{$this->vocab->name}/{$term1->name}");
+    $tokens = array(
+      'catpath' => $term1->name,
+      'catalias' => "category/{$this->vocab->name}/{$term1->name}",
+    );
+    $this->assertTokens('taxonomy', $term1, $tokens);
 
     // Change the term name to check that the alias is also changed.
     // Regression test for http://drupal.org/node/822174.
@@ -638,15 +683,24 @@ class PathautoTaxonomyTokenTestCase exte
     $term1->name = drupal_strtolower($this->randomName());
     $form_values = (array) $term1;
     taxonomy_save_term($form_values);
-    $this->assertToken('taxonomy', $term1, 'catpath', $term1->name);
+    $tokens = array(
+      'catpath' => $term1->name,
+    );
+    $this->assertTokens('taxonomy', $term1, $tokens);
 
     $term2 = $this->addTerm($this->vocab, array('parent' => $term1->tid));
-    $this->assertToken('taxonomy', $term2, 'catpath', "{$term1->name}/{$term2->name}");
-    $this->assertToken('taxonomy', $term2, 'catalias', "category/{$this->vocab->name}/{$term2->name}");
+    $tokens = array(
+      'catpath' => "{$term1->name}/{$term2->name}",
+      'catalias' => "category/{$this->vocab->name}/{$term2->name}",
+    );
+    $this->assertTokens('taxonomy', $term2, $tokens);
 
     $term3 = $this->addTerm($this->vocab, array('parent' => $term2->tid, 'name' => ' foo/bar fer|zle '));
-    $this->assertToken('taxonomy', $term3, 'catpath', "{$term1->name}/{$term2->name}/foobar-ferzle");
-    $this->assertToken('taxonomy', $term3, 'catalias', "category/{$this->vocab->name}/foobar-ferzle");
+    $tokens = array(
+      'catpath' => "{$term1->name}/{$term2->name}/foobar-ferzle",
+      'catalias' => "category/{$this->vocab->name}/foobar-ferzle",
+    );
+    $this->assertTokens('taxonomy', $term3, $tokens);
   }
 
   /**
@@ -661,11 +715,19 @@ class PathautoTaxonomyTokenTestCase exte
       'type' => 'story',
       'taxonomy' => array($term1->tid, $term2->tid, $term3->tid),
     ));
+    $tokens = array(
+      'termpath' => $term2->name,
+      'termalias' => "category/{$this->vocab->name}/{$term2->name}",
+    );
+    $this->assertTokens('node', $node, $tokens);
     $this->assertToken('node', $node, 'termpath', $term2->name);
     $this->assertToken('node', $node, 'termalias', "category/{$this->vocab->name}/{$term2->name}");
 
     $non_term_node = $this->drupalCreateNode(array('type' => 'story'));
-    $this->assertToken('node', $non_term_node, 'termpath', '');
-    $this->assertToken('node', $non_term_node, 'termalias', '');
+    $tokens = array(
+      'termpath' => '',
+      'termalias' => '',
+    );
+    $this->assertTokens('node', $non_term_node, $tokens);
   }
 }
