t('Actions content'), 'desc' => t('Perform various tests with content actions.') , 'group' => 'Actions', ); } /** * 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) ."')")); $this->assertFalse($not_clean, t('Actions were already assigned to the trigger. Unassign all content triggers before attempting to run again.')); if ($not_clean) { return; } // 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->drupalPost('admin/build/trigger/node', $edit, 'Assign'); // Create an unpublished node. $node = $this->drupalCreateNode(array('status' => 0)); // 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->drupalPost('admin/build/trigger/node', $edit, 'Assign'); $this->assertWantedRaw(t('The action you chose 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->drupalPost('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.')); } }