public function testIsFieldUsedInWorkflow() { $tracker = new MockTracker(); $tracker->setReturnValue('getId', 123); $field_status = new MockTracker_FormElement_Field_List(); $field_status->setReturnReference('getTracker', $tracker); $field_status->setReturnValue('getId', 1001); $field_start_date = new MockTracker_FormElement_Field_List(); $field_start_date->setReturnReference('getTracker', $tracker); $field_start_date->setReturnValue('getId', 1002); $field_close_date = new MockTracker_FormElement_Field_List(); $field_close_date->setReturnReference('getTracker', $tracker); $field_close_date->setReturnValue('getId', 1003); $workflow = new MockWorkflow(); $workflow->setReturnValue('getFieldId', $field_status->getId()); $tf = new MockTransitionFactory(); $tf->setReturnValue('isFieldUsedInTransitions', false, array($field_start_date)); $tf->setReturnValue('isFieldUsedInTransitions', true, array($field_close_date)); $tf->expectCallCount('isFieldUsedInTransitions', 2); $wf = TestHelper::getPartialMock('WorkflowFactory', array('getWorkflowByTrackerId', 'getTransitionFactory')); $wf->setReturnReference('getTransitionFactory', $tf); $wf->setReturnReference('getWorkflowByTrackerId', $workflow, array($tracker->getId())); $this->assertTrue($wf->isFieldUsedInWorkflow($field_status)); $this->assertFalse($wf->isFieldUsedInWorkflow($field_start_date)); $this->assertTrue($wf->isFieldUsedInWorkflow($field_close_date)); }
function testGetOriginalProjectAndOriginalTracker() { $project = new MockProject(); $tracker = new MockTracker(); $tracker->setReturnValue('getProject', $project); $original = new MockTracker_FormElement_Field_Selectbox(); $original->setReturnValue('getTracker', $tracker); $element = $this->GivenAFormElementWithIdAndOriginalField(null, $original); $this->assertEqual($tracker, $element->getOriginalTracker()); $this->assertEqual($project, $element->getOriginalProject()); }
private function GivenAnElementWithManyCopies() { $factory = new MockTracker_FormElementFactory(); $project = new MockProject(); $project->setReturnValue('getPublicName', 'Project'); $element = new FakeFormElement(1, null, null, null, null, null, null, null, null, null, null, null); $element->setFormElementFactory($factory); $tracker1 = new MockTracker(); $tracker1->setReturnValue('getId', '123'); $tracker1->setReturnValue('getName', 'Canard'); $tracker1->setReturnValue('getProject', $project); $copy1 = new FakeFormElement(10, null, null, null, null, null, null, null, null, null, null, $element); $copy2 = new FakeFormElement(20, null, null, null, null, null, null, null, null, null, null, $element); $copy1->setTracker($tracker1); $copy2->setTracker($tracker1); $tracker3 = new MockTracker(); $tracker3->setReturnValue('getId', '124'); $tracker3->setReturnValue('getName', 'Saucisse'); $tracker3->setReturnValue('getProject', $project); $copy3 = new FakeFormElement(30, null, null, null, null, null, null, null, null, null, null, $element); $copy3->setTracker($tracker3); $factory->setReturnValue('getSharedTargets', array($copy1, $copy2, $copy3), array($element)); return $element; }
function testCreateNewChangesetWithoutNotification() { $email = null; //not anonymous user $comment = ''; $this->response->expectCallCount('addFeedback', 0); $comment_dao = new MockTracker_Artifact_Changeset_CommentDao(); stub($comment_dao)->createNewVersion()->returns(true); $comment_dao->expectCallCount('createNewVersion', 1); $dao = new MockTracker_Artifact_ChangesetDao(); $dao->setReturnValueAt(0, 'create', 1001, array(66, 1234, null, $_SERVER['REQUEST_TIME'])); $dao->setReturnValueAt(1, 'create', 1002, array(66, 1234, null, $_SERVER['REQUEST_TIME'])); $dao->expectCallCount('create', 1); $user = mock('PFUser'); $user->setReturnValue('getId', 1234); $user->setReturnValue('isAnonymous', false); $tracker = new MockTracker(); $tracker->setReturnValue('getGroupId', 666); $tracker->setReturnValue('getItemName', 'foobar'); $tracker->setReturnValue('getFormElements', array()); $factory = new MockTracker_FormElementFactory(); $field1 = new MockTracker_FormElement_Field(); $field1->setReturnValue('getId', 101); $field1->setReturnValue('isValid', true); $field1->setReturnValue('isValidRegardingRequiredProperty', true); $field1->setReturnValue('userCanUpdate', true); $field1->setReturnValue('saveNewChangeset', true); $field1->expectOnce('saveNewChangeset'); $field2 = new MockTracker_FormElement_Field(); $field2->setReturnValue('getId', 102); $field2->setReturnValue('isValid', true, array('*', '123')); $field2->setReturnValue('isValid', false, array('*', '456')); $field2->setReturnValue('isValidRegardingRequiredProperty', true); $field2->setReturnValue('userCanUpdate', true); $field2->setReturnValue('saveNewChangeset', true); $field2->expectOnce('saveNewChangeset'); $field3 = new MockTracker_FormElement_Field(); $field3->setReturnValue('getId', 103); $field3->setReturnValue('isValid', true); $field3->setReturnValue('isValidRegardingRequiredProperty', true); $field3->setReturnValue('saveNewChangeset', true); $field3->expectOnce('saveNewChangeset'); $field3->setReturnValue('userCanUpdate', true); $factory->setReturnValue('getUsedFields', array($field1, $field2, $field3)); $factory->setReturnValue('getAllFormElementsForTracker', array()); $new_changeset = new MockTracker_Artifact_Changeset(); $new_changeset->expectNever('notify', array()); $changeset = new MockTracker_Artifact_Changeset(); $changeset->setReturnValue('hasChanges', true); $changeset_value1 = new MockTracker_Artifact_ChangesetValue(); $changeset_value2 = new MockTracker_Artifact_ChangesetValue(); $changeset_value3 = new MockTracker_Artifact_ChangesetValue(); $changeset->setReturnReference('getValue', $changeset_value1, array($field1)); $changeset->setReturnReference('getValue', $changeset_value2, array($field2)); $changeset->setReturnReference('getValue', $changeset_value3, array($field3)); $changeset->setReturnValue('getValues', array()); $reference_manager = new MockReferenceManager(); $reference_manager->expect('extractCrossRef', array($comment, 66, 'plugin_tracker_artifact', 666, $user->getId(), 'foobar')); $art_factory = new MockTracker_ArtifactFactory(); $artifact = new Tracker_ArtifactTestVersion(); $artifact->setReturnReference('getChangesetDao', $dao); $artifact->setReturnReference('getChangesetCommentDao', $comment_dao); $artifact->setReturnReference('getFormElementFactory', $factory); $artifact->setReturnReference('getTracker', $tracker); $artifact->setReturnValue('getId', 66); $artifact->setReturnReference('getLastChangeset', $changeset); $artifact->setReturnReference('getChangeset', $new_changeset); $artifact->setReturnReference('getReferenceManager', $reference_manager); $artifact->setReturnReference('getArtifactFactory', $art_factory); stub($art_factory)->save()->returns(true); $art_factory->expectOnce('save'); $workflow = new MockWorkflow(); $workflow->expectCallCount('before', 2); $workflow->setReturnValue('validate', true); $artifact->setReturnValue('getWorkflow', $workflow); // Valid $fields_data = array(102 => '123'); $artifact->createNewChangeset($fields_data, $comment, $user, false); // Not valid $fields_data = array(102 => '456'); $this->expectException('Tracker_Exception'); $artifact->createNewChangeset($fields_data, $comment, $user); }
function testNotifyStopped() { $changeset = new Tracker_Artifact_ChangesetTestVersion(); $tracker = new MockTracker(); $tracker->setReturnValue('isNotificationStopped', true); $changeset->setReturnReference('getTracker', $tracker); $changeset->expectNever('getFormElementFactory'); $changeset->expectNever('sendNotification'); $changeset->notify(); }
public function itReturnAllDefinedPlanningsForAProject() { $tracker = new MockTracker(); $tracker->setReturnValue('userCanView', true); $factoryBuilder = aPlanningFactory(); $factoryBuilder->tracker_factory->setReturnValue('getTrackerById', $tracker); $result_set = TestHelper::arrayToDar(array('id' => 1, 'name' => 'Release Backlog', 'group_id' => 102, 'planning_tracker_id' => 103, 'backlog_title' => 'Release Backlog', 'plan_title' => 'Sprint Plan'), array('id' => 2, 'name' => 'Product Backlog', 'group_id' => 102, 'planning_tracker_id' => 103, 'backlog_title' => 'Release Backlog', 'plan_title' => 'Sprint Plan')); $factoryBuilder->dao->setReturnValue('searchPlannings', $result_set); $expected = array(new Planning(1, 'Release Backlog', 102, 'Release Backlog', 'Sprint Plan'), new Planning(2, 'Product Backlog', 102, 'Release Backlog', 'Sprint Plan')); $this->assertEqual($expected, $factoryBuilder->build()->getPlannings($this->user, 123)); }
function testUserCanViewTrackerAccessSubmitterOrAssignee() { $ugroup_ass = 101; $ugroup_sub = 102; // $assignee and $u_ass are in the same ugroup (UgroupAss - ugroup_id=101) // $submitter and $u_sub are in the same ugroup (UgroupSub - ugroup_id=102) // $other and $u are neither in UgroupAss nor in UgroupSub // $u = new MockUser(); $u->setReturnValue('getId', 120); $u->setReturnValue('isMemberOfUgroup', false); $u->setReturnValue('isSuperUser', false); // $assignee = new MockUser(); $assignee->setReturnValue('getId', 121); $assignee->setReturnValue('isMemberOfUgroup', true, array(101, 222)); $assignee->setReturnValue('isMemberOfUgroup', false, array(102, 222)); $assignee->setReturnValue('isSuperUser', false); // $u_ass = new MockUser(); $u_ass->setReturnValue('getId', 122); $u_ass->setReturnValue('isMemberOfUgroup', true, array(101, 222)); $u_ass->setReturnValue('isMemberOfUgroup', false, array(102, 222)); $u_ass->setReturnValue('isSuperUser', false); // $submitter = new MockUser(); $submitter->setReturnValue('getId', 123); $submitter->setReturnValue('isMemberOfUgroup', false, array(101, 222)); $submitter->setReturnValue('isMemberOfUgroup', true, array(102, 222)); $submitter->setReturnValue('isSuperUser', false); // $u_sub = new MockUser(); $u_sub->setReturnValue('getId', 124); $u_sub->setReturnValue('isMemberOfUgroup', false, array(101, 222)); $u_sub->setReturnValue('isMemberOfUgroup', true, array(102, 222)); $u_sub->setReturnValue('isSuperUser', false); // $other = new MockUser(); $other->setReturnValue('getId', 125); $other->setReturnValue('isMemberOfUgroup', false); $other->setReturnValue('isSuperUser', false); $user_manager = new MockUserManager(); $user_manager->setReturnReference('getUserById', $u, array(120)); $user_manager->setReturnReference('getUserById', $assignee, array(121)); $user_manager->setReturnReference('getUserById', $u_ass, array(122)); $user_manager->setReturnReference('getUserById', $submitter, array(123)); $user_manager->setReturnReference('getUserById', $u_sub, array(124)); $user_manager->setReturnReference('getUserById', $other, array(125)); // $artifact_subass has been submitted by $submitter and assigned to $assignee // $assignee, $u_ass, $submitter, $u_sub should have the right to see it. // $other and $u should not have the right to see it $tracker = new MockTracker(); $tracker->setReturnValue('getId', 666); $tracker->setReturnValue('getGroupId', 222); $perms_tracker_access_full = array(); $perms_tracker_access_assignee = array(array('ugroup_id' => $ugroup_ass)); $perms_tracker_access_submitter = array(array('ugroup_id' => $ugroup_sub)); $tracker->setReturnReference('permission_db_authorized_ugroups', $perms_tracker_access_full, array('PLUGIN_TRACKER_ACCESS_FULL')); $tracker->setReturnReference('permission_db_authorized_ugroups', $perms_tracker_access_assignee, array('PLUGIN_TRACKER_ACCESS_ASSIGNEE')); $tracker->setReturnReference('permission_db_authorized_ugroups', $perms_tracker_access_submitter, array('PLUGIN_TRACKER_ACCESS_SUBMITTER')); $contributor_field = new MockTracker_FormElement_Field(); $tracker->setReturnReference('getContributorField', $contributor_field); $artifact_subass = new Tracker_ArtifactTestPermissions(); $artifact_subass->setReturnReference('getUserManager', $user_manager); $artifact_subass->setReturnReference('getTracker', $tracker); $artifact_subass->setReturnValue('useArtifactPermissions', false); $artifact_subass->setReturnValue('getSubmittedBy', 123); $user_changeset_value = new MockTracker_Artifact_ChangesetValue(); $contributors = array(121); $user_changeset_value->setReturnReference('getValue', $contributors); $artifact_subass->setReturnReference('getValue', $user_changeset_value, array($contributor_field)); $this->assertTrue($artifact_subass->userCanView($submitter)); $this->assertTrue($artifact_subass->userCanView($u_sub)); $this->assertTrue($artifact_subass->userCanView($assignee)); $this->assertTrue($artifact_subass->userCanView($u_ass)); $this->assertFalse($artifact_subass->userCanView($other)); $this->assertFalse($artifact_subass->userCanView($u)); }
private function GivenADuplicatableTracker($tracker_id) { $t1 = new MockTracker(); $t1->setReturnValue('mustBeInstantiatedForNewProjects', true); $t1->setReturnValue('getId', $tracker_id); return $t1; }
/** * Given I have 3 plugin_tracker_artifact references in the template project * - bug * - issue * - task * And 'bug' correspond to 'Bug' tracker * And 'task' correspond to 'Task' tracker * And 'issue' was created by hand by the admin * And 'Bug' tracker is instanciated for new project * And 'Task' tracker is not instanciated for new project * * Then 'issue' reference is created * And 'bug' reference is not created (it's up to tracker creation to create the reference) * And 'task' reference is not created (it's up to tracker creation to create the reference) * */ public function testDuplicateCopyReferences() { $source_project_id = 100; $destinatnion_project_id = 120; $u_group_mapping = array(); $tm = TestHelper::getPartialMock('TrackerManager', array('getTrackerFactory', 'getReferenceManager')); $tf = new MockTrackerFactory(); $tf->expectOnce('duplicate'); $tm->setReturnValue('getTrackerFactory', $tf); $r1 = new Reference(101, 'bug', 'desc', '/plugins/tracker/?aid=$1&group_id=$group_id', 'P', 'plugin_tracker', 'plugin_tracker_artifact', 1, 100); $r2 = new Reference(102, 'issue', 'desc', '/plugins/tracker/?aid=$1&group_id=$group_id', 'P', 'plugin_tracker', 'plugin_tracker_artifact', 1, 100); $r3 = new Reference(103, 'task', 'desc', '/plugins/tracker/?aid=$1&group_id=$group_id', 'P', 'plugin_tracker', 'plugin_tracker_artifact', 1, 100); $rm = new MockReferenceManager(); $rm->expectOnce('getReferencesByGroupId', array($source_project_id)); $rm->setReturnValue('getReferencesByGroupId', array($r1, $r2, $r3)); $tm->setReturnValue('getReferenceManager', $rm); $t1 = new MockTracker(); $t1->setReturnValue('getItemName', 'bug'); $t1->setReturnValue('mustBeInstantiatedForNewProjects', true); $t2 = new MockTracker(); $t2->setReturnValue('getItemName', 'task'); $t2->setReturnValue('mustBeInstantiatedForNewProjects', false); $tf->setReturnValue('getTrackersByGroupId', array($t1, $t2), $source_project_id); $rm->expectOnce('createReference', array($r2)); $tm->duplicate($source_project_id, $destinatnion_project_id, $u_group_mapping); }