? project_issue_status_tests.patch Index: project_issue.test =================================================================== RCS file: project_issue.test diff -N project_issue.test --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ project_issue.test 20 Apr 2010 22:20:56 -0000 @@ -0,0 +1,82 @@ +drupalCreateUser(array('administer projects', 'access administration pages', 'create project issues', 'maintain projects')); + $this->drupalLogin($admin_user); + } + + public static function getInfo() { + return array( + 'name' => 'Project Issue Status Functionality', + 'description' => 'Test Project Issue Status Functionality.', + 'group' => 'Project Issue' + ); + } + + + /** + * Test the creation, reordering, and deletion of issue statuses. + */ + function testIssueStatusCreation() { + // Test project issue status page. + $this->drupalGet('admin/project/project-issue-status'); + $this->assertText(t('Project issue status options')); + + + // Test issue status creation. + $edit = array( + 'status_add[name]' => $this->randomName(), + 'status_add[default_query]' => 1, + 'status_add[author_has]' => 1, + ); + + $this->drupalPost('admin/project/project-issue-status', $edit, t('Save')); + $status_id = db_result(db_query("SELECT pis.sid FROM {project_issue_state} pis WHERE pis.name = '%s'", $edit['status_add[name]'])); + $this->assertFieldByName('status['. $status_id .'][name]', $edit['status_add[name]'], t('Issue status created successfully')); + $this->assertFieldByName('status['. $status_id .'][default_query]', $edit['status_add[default_query]']); + $this->assertFieldByName('status['. $status_id .'][author_has]', $edit['status_add[author_has]']); + + + // Test the default issue status implementation. + $this->createProject(); + $this->drupalGet('node/add/project-issue'); + $this->assertNoFieldbyName('sid', $status_id); + + // Now set the default to our new status and ensure it works. + $this->drupalPost('admin/project/project-issue-status', array('default_state' => $status_id), t('Save')); + $this->drupalGet('node/add/project-issue'); + $this->assertFieldByName('sid', $status_id); + + + // Test issue status reordering. + $edit = array(); + $statuses = db_query("SELECT pis.sid FROM {project_issue_state} pis ORDER BY rand() LIMIT 3"); + while ($s = db_fetch_object($statuses)) { + $edit['status['. $s->sid .'][weight]'] = rand(-15, 15); + } + + $this->drupalPost('admin/project/project-issue-status', $edit, t('Save')); + + foreach ($edit as $name => $weight) { + $this->assertFieldByName($name, $weight); + } + + // Test deletion of issue status. + $this->drupalGet('admin/project/project-issue-status/delete/'. $status_id); + $this->assertText(t('Are you sure you want to delete the status option')); + $this->drupalPost('admin/project/project-issue-status/delete/'. $status_id, array('confirm' => 1), t('Delete')); + $this->drupalGet('admin/project/project-issue-status'); + $this->assertNoFieldByName('status['. $status_id .'][name]'); + } +} +