Index: tests/content_actions.test =================================================================== RCS file: tests/content_actions.test diff -N tests/content_actions.test --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ tests/content_actions.test 26 Dec 2007 16:36:15 -0000 @@ -0,0 +1,89 @@ + t('Actions content'), 'desc' => t('Perform various tests with content actions.') , 'group' => 'Actions'); + } + + /** + * Setup function + */ + function setup() { + } + + /** + * Various tests, all in one function to assure they happen in the right order. + */ + function testActionsContent() { + global $user; + + $this->drupalModuleEnable('trigger'); + + $content_actions = array('node_publish_action', 'node_unpublish_action', 'node_make_sticky_action', 'node_make_unsticky_action', 'node_promote_action', 'node_unpromote_action'); + + $hash = md5('node_publish_action'); + + $not_clean = db_result(db_query("SELECT COUNT(*) FROM {trigger_assignments} WHERE aid IN ('". implode("','", $content_actions) ."')")); + + if ($not_clean) { + $this->assertFalse($not_clean, t('Actions were already assigned to the trigger. Unassign all content triggers before attempting to run again.')); + return; + } + else { + $this->assertFalse($not_clean, t('Actions were already not assigned to the trigger.')); + } + + // Test 1: Assign an action to a trigger, then pull the trigger, and make sure the actions fire. (Wow, those metaphors work out nicely). + + $test_user = $this->drupalCreateUserRolePerm(array('administer actions', 'create page content')); + $this->drupalLoginUser($test_user); + + // Set action id to "publish post". + $edit = array('aid' => $hash); + $this->drupalPostRequest('admin/build/trigger/node', $edit, 'Assign'); + + // Create an unpublished node. + $node->body = $this->randomName(32); + $node->title = $this->randomName(8); + $node->teaser = $node->body; + $node->comment = 2; + $node->date = format_date($node->created, 'custom', 'Y-m-d H:i:s O'); + $node->format = 1; + $node->name = $test_user->name; + $node->uid = $test_user->uid; + $node->promote = 0; + $node->revision = 0; + $node->status = 0; + $node->sticky = 0; + $node->type = 'page'; + $node->revisions = NULL; + $node->taxonomy = NULL; + node_save($node); + // Node should be published automatically. + $loaded_node = node_load($node->nid); + $this->assertTrue($loaded_node->status == 1, t('Check to make sure the node is automatically published')); + + // Leave action assigned for next test + + // Test 2: There should be an error when the action is assigned to the trigger twice. + + $edit = array('aid' => $hash); + $this->drupalPostRequest('admin/build/trigger/node', $edit, 'Assign'); + $this->assertWantedRaw(t('The action you choose is already assigned to that trigger.'), t('Check to make sure an error occurs when assigning an action to a trigger twice.')); + + // Test 3: The action should be able to be unassigned from a trigger. + + // This effectively cleans up as well. + $this->drupalPostRequest('admin/build/trigger/unassign/nodeapi/presave/'. $hash, array(), 'Unassign'); + $this->assertWantedRaw(t('Action %action has been unassigned.', array('%action' => 'Publish post')), t('Check to make sure action can be unassigned from trigger.')); + + $assigned = db_result(db_query("SELECT COUNT(*) FROM {trigger_assignments} WHERE aid IN ('". implode("','", $content_actions) ."')")); + $this->assertFalse($assigned, t('Check to make sure unassign worked properly at the database level.')); + } +}