Example #1
0
 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());
 }
Example #3
0
 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;
 }
Example #4
0
 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();
 }
Example #6
0
 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));
 }
Example #7
0
 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));
 }
Example #8
0
 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);
 }