diff --git a/tests/VersioncontrolTokenTests.test b/tests/VersioncontrolTokenTests.test index 9094191..0837028 100644 --- a/tests/VersioncontrolTokenTests.test +++ b/tests/VersioncontrolTokenTests.test @@ -64,7 +64,7 @@ class VersioncontrolTokenTests extends VersioncontrolTestCase { '[VersioncontrolOperation:committer_date]' => format_date($object->committer_date, 'medium'), '[VersioncontrolOperation:author]' => $object->author, '[VersioncontrolOperation:committer]' => $object->committer, - '[VersioncontrolOperation:message]' => $object->message, + '[VersioncontrolOperation:message]' => check_plain($object->message), ); // Test to make sure that we generated something for each token. $this->assertFalse(in_array(0, array_map('strlen', $tokens)), t('No empty tokens generated.')); @@ -104,6 +104,7 @@ class VersioncontrolTokenTests extends VersioncontrolTestCase { function testVersioncontrolItemTokens() { $object = $this->versioncontrolCreateItem(); + $action_strings = versioncontrol_revision_actions(); $tokens = array( '[VersioncontrolItem:id]' => $object->item_revision_id, '[VersioncontrolItem:operation]' => $object->vc_op_id, @@ -111,8 +112,8 @@ class VersioncontrolTokenTests extends VersioncontrolTestCase { '[VersioncontrolItem:path]' => $object->path, '[VersioncontrolItem:revision]' => $object->revision, '[VersioncontrolItem:source_item]' => $object->source_item_revision_id, - '[VersioncontrolItem:action]' => $object->action, - '[VersioncontrolItem:line_changes_addded]' => $object->line_changes_addded, + '[VersioncontrolItem:action]' => $action_strings[$object->action], + '[VersioncontrolItem:line_changes_added]' => $object->line_changes_addded, '[VersioncontrolItem:line_changes_removed]' => $object->line_changes_removed, ); // Test to make sure that we generated something for each token. @@ -123,18 +124,19 @@ class VersioncontrolTokenTests extends VersioncontrolTestCase { } } - //function testVersioncontrolEventTokens() { - //$message = '[event-id] [event-actor] [event-actor-name] [event-actor-uid] [event-repository] [event-repository-id] [event-repository-name]'; - //$object = $this->versioncontrolCreateEvent(); - //$actor = db_fetch_object(db_query("SELECT name, mail FROM {users} WHERE uid = %d", $object->uid)); - //$expected = $object->elid .' '. - //l($actor->name, 'user/'. $object->uid) .' '. - //$actor->name .' '. - //$object->uid .' '. - //l($object->getRepository()->name, $object->getRepository()->getUrlHandler()->getRepositoryViewUrl()) .' '. - //$object->getRepository()->repo_id .' '. - //$object->getRepository()->name; - //$render = token_replace($message, array('VersioncontrolEvent' => $object)); - //$this->assertEqual($render, $expected); - //} + function testVersioncontrolEventTokens() { + $object = $this->versioncontrolCreateEvent(); + $tokens = array( + '[VersioncontrolEvent:id]' => $object->elid, + '[VersioncontrolEvent:repository]' => $object->repo_id, + '[VersioncontrolEvent:date]' => format_date($object->timestamp, 'medium'), + '[VersioncontrolEvent:actor]' => $object->uid, + ); + // Test to make sure that we generated something for each token. + $this->assertFalse(in_array(0, array_map('strlen', $tokens)), t('No empty tokens generated.')); + foreach ($tokens as $name => $value) { + $render = token_replace($name, array('VersioncontrolEvent' => $object)); + $this->assertEqual($render, $value, t('Token %name generated correctly.', array('%name' => $name))); + } + } } diff --git a/versioncontrol.tokens.inc b/versioncontrol.tokens.inc index 0eaa63c..a7172bc 100644 --- a/versioncontrol.tokens.inc +++ b/versioncontrol.tokens.inc @@ -197,7 +197,32 @@ function versioncontrol_token_info() { ); // Event. - // @todo VersioncontrolEvent tokens: id, repository, actor, date + $info['types']['VersioncontrolEvent'] = array( + 'name' => t('Version Control Event'), + 'description' => t('Tokens related to events.'), + 'needs-data' => 'VersioncontrolEvent', + ); + $info['tokens']['VersioncontrolEvent'] = array( + 'id' => array( + 'name' => t('Event ID'), + 'description' => t('The unique identifier for the event.'), + ), + 'repository' => array( + 'name' => t('Event repository ID'), + 'description' => t('The unique identifier for the repository this event belongs to.'), + 'type' => 'VersioncontrolRepository', + ), + 'actor' => array( + 'name' => t('Event actor user ID'), + 'description' => t('The unique identifier for the user who performed this event.'), + 'type' => 'user', + ), + 'date' => array( + 'name' => t('Event date'), + 'description' => 'Date/time when the event happened.', + 'type' => 'date', + ), + ); return $info; } @@ -343,6 +368,36 @@ function versioncontrol_tokens($type, $tokens, array $data = array(), array $opt $replacements += token_generate('VersioncontrolItem', $source_item_tokens, array('VersioncontrolItem' => $source_item), $options); } break; + case 'VersioncontrolEvent': + switch ($name) { + case 'repository': + $name = 'repo_id'; + $replacements[$original] = $sanitize ? check_plain($object->$name) : $object->$name; + break; + case 'date': + $replacements[$original] = format_date($object->timestamp, 'medium', '', NULL, $language_code); + break; + case 'id': + $name = 'elid'; + $replacements[$original] = $sanitize ? check_plain($object->$name) : $object->$name; + break; + case 'actor': + $name = 'uid'; + $replacements[$original] = $sanitize ? check_plain($object->$name) : $object->$name; + break; + } + if ($repository_tokens = token_find_with_prefix($tokens, 'repository')) { + $repository = $object->getRepository(); + $replacements += token_generate('VersioncontrolRepository', $repository_tokens, array('VersioncontrolRepository' => $repository), $options); + } + if ($date_tokens = token_find_with_prefix($tokens, 'date')) { + $replacements += token_generate('date', $date_tokens, array('date' => $object->timestamp), $options); + } + if ($actor_tokens = token_find_with_prefix($tokens, 'actor')) { + $actor = user_load($object->uid); + $replacements += token_generate('user', $actor_tokens, array('user' => $actor), $options); + } + break; } }