public function itCleansUserFromRecipientsWhenUserCantReadAtLeastOneChangedField()
 {
     $field1 = new MockTracker_FormElement_Field_Date();
     $value1_previous = new MockTracker_Artifact_ChangesetValue_Date();
     $value1_current = new MockTracker_Artifact_ChangesetValue_Date();
     $dao = new MockTracker_Artifact_Changeset_ValueDao();
     $dar = new MockDataAccessResult();
     $fact = new MockTracker_FormElementFactory();
     $artifact = new MockTracker_Artifact();
     $previous_changeset = new MockTracker_Artifact_Changeset();
     $um = new MockUserManager();
     $comment = new MockTracker_Artifact_Changeset_Comment();
     $current_changeset = new Tracker_Artifact_ChangesetTestVersion();
     $previous_changeset->setReturnValue('getId', 65);
     $previous_changeset->setReturnReference('getValue', $value1_previous, array($field1));
     $previous_changeset->setReturnReference('getUserManager', $um);
     $artifact->setReturnReference('getPreviousChangeset', $previous_changeset, array(66));
     $dar->setReturnValueAt(0, 'current', array('changeset_id' => 66, 'field_id' => 1, 'id' => 11, 'has_changed' => 1));
     $dar->setReturnValue('valid', true);
     $dar->setReturnValueAt(2, 'valid', false);
     $dao->setReturnReference('searchById', $dar);
     $fact->setReturnReference('getFieldById', $field1, array(1));
     $field1->setReturnValue('getId', 1);
     $field1->setReturnValue('getLabel', 'field1');
     $field1->setReturnValue('userCanRead', false);
     $field1->setReturnReference('getChangesetValue', $value1_current, array('*', 11, 1));
     $value1_previous->expectNever('hasChanged');
     $value1_current->setReturnValue('hasChanged', true);
     $value1_current->setReturnValue('diff', 'has changed', array($value1_previous, '*'));
     $comment->setReturnValue('hasEmptyBody', true);
     $current_changeset->setReturnValue('getId', 66);
     $current_changeset->setReturnReference('getValueDao', $dao);
     $current_changeset->setReturnReference('getFormElementFactory', $fact);
     $current_changeset->setReturnReference('getArtifact', $artifact);
     $current_changeset->setReturnReference('getUserManager', $um);
     $current_changeset->setReturnReference('getComment', $comment);
     $recipients = array("recipient1" => true, "recipient2" => true, "recipient3" => true);
     $user1 = stub('PFUser')->getUserName()->returns('recipient1');
     $user2 = stub('PFUser')->getUserName()->returns('recipient2');
     $user3 = stub('PFUser')->getUserName()->returns('recipient3');
     $um->setReturnReference('getUserByUserName', $user1);
     $um->setReturnReference('getUserByUserName', $user2);
     $um->setReturnReference('getUserByUserName', $user3);
     $current_changeset->removeRecipientsThatMayReceiveAnEmptyNotification($recipients);
     $this->assertEqual($recipients, array());
 }
 private function GivenAnArtifact($id, $title, $already_linked_items)
 {
     $artifact = new MockTracker_Artifact();
     $artifact->setReturnValue('getTitle', $title);
     $artifact->setReturnValue('fetchTitle', "#{$id} {$title}");
     $artifact->setReturnValue('getId', $id);
     $artifact->setReturnValue('fetchDirectLinkToArtifact', $id);
     $artifact->setReturnValue('getUniqueLinkedArtifacts', $already_linked_items);
     $artifact->setReturnValue('userCanView', true);
     $artifact->setReturnValue('getAllowedChildrenTypes', array());
     $tracker = stub('Tracker')->userCanView()->returns(true);
     stub($artifact)->getTracker()->returns($tracker);
     return $artifact;
 }
 function testTransitionIsInvalidOnSubmit()
 {
     $artifact = new MockTracker_Artifact();
     $changeset = new MockTracker_Artifact_Changeset_Null();
     $bind = new MockTracker_FormElement_Field_List_Bind_Static();
     $workflow = new MockWorkflow();
     $tracker = new MockTracker();
     $user = mock('PFUser');
     $v1 = new MockTracker_FormElement_Field_List_BindValue();
     $v1->setReturnValue('__toString', '# 123');
     $v1->setReturnValue('getLabel', 'label1');
     $submitted_value_1 = '123';
     // $v1
     $v2 = new MockTracker_FormElement_Field_List_BindValue();
     $v2->setReturnValue('__toString', '# 456');
     $v2->setReturnValue('getLabel', 'label2');
     $submitted_value_2 = '456';
     // $v2
     stub($bind)->getAllValues()->returns(array($submitted_value_1 => null, $submitted_value_2 => null));
     $artifact->setReturnReference('getLastChangeset', $changeset);
     $bind->setReturnReference('getValue', $v2, array($submitted_value_2));
     // null -> v1
     // v1 -> v2
     // other are invalid
     $workflow->setReturnValue('isTransitionExist', true, array(null, $v1));
     $workflow->setReturnValue('isTransitionExist', true, array($v1, $v2));
     $workflow->setReturnValue('isTransitionExist', false);
     $field_list = new $this->field_class();
     $field_list->setReturnReference('getBind', $bind);
     $field_list->setReturnValue('fieldHasEnableWorkflow', true);
     $field_list->setReturnReference('getWorkflow', $workflow);
     $field_list->setReturnReference('getTracker', $tracker);
     $field_list->setReturnValue('permission_is_authorized', true);
     $field_list->setReturnValue('getCurrentUser', $user);
     $field_list->setReturnValue('getTransitionId', 1);
     $field_list->setReturnValue('isNone', false);
     $field_list->setReturnValue('isRequired', false);
     $changeset->setReturnReference('getValue', $changeset_value_list, array($field_list));
     // We try to change the field from null to v2 => invalid
     $this->assertFalse($field_list->isValid($artifact, $submitted_value_2));
 }
Example #4
0
 public function testHasUnknownAidUpdateModeError()
 {
     $header = array('aid', 'summary', 'details');
     $lines = array(array('1', 'summary 1', 'details 1'), array('2', 'summary 2', 'details 2'), array('3', 'summary 3', 'details 3'), array('4', 'summary 4', 'details 4'));
     $artifact1 = new MockTracker_Artifact();
     $artifact1->setReturnValue('getId', '1');
     $artifact2 = new MockTracker_Artifact();
     $artifact2->setReturnValue('getId', '2');
     $artifact3 = new MockTracker_Artifact();
     $artifact3->setReturnValue('getId', '3');
     $af = new MockTracker_ArtifactFactory();
     $this->tracker->setReturnReference('getTrackerArtifactFactory', $af);
     $af->setReturnReference('getArtifactById', $artifact1, array('1'));
     $af->setReturnReference('getArtifactById', $artifact2, array('2'));
     $af->setReturnReference('getArtifactById', $artifact3, array('3'));
     $af->setReturnValue('getArtifactById', null, array('4'));
     $this->tracker->setReturnValue('aidExists', true, array('1'));
     $this->tracker->setReturnValue('aidExists', true, array('2'));
     $this->tracker->setReturnValue('aidExists', true, array('3'));
     $this->tracker->setReturnValue('aidExists', false, array('4'));
     $this->assertTrue($this->tracker->hasUnknownAid($header, $lines));
 }
 function testIsValid_AddsErrorIfARequiredFieldValueIsAnEmptyString()
 {
     $f = new Tracker_FormElement_Field_ArtifactLinkTestVersion();
     $f->setReturnValue('isRequired', true);
     $a = new MockTracker_Artifact();
     $a->setReturnValue('getLastChangeset', false);
     $this->assertFalse($f->isValidRegardingRequiredProperty($a, ''));
     $this->assertTrue($f->hasErrors());
 }
 private function buildChangeSet($user)
 {
     $uh = new MockUserHelper();
     $tracker = new MockTracker();
     $a = new MockTracker_Artifact();
     $a->setReturnValue('getTracker', $tracker);
     $um = new MockUserManager();
     $um->setReturnValue('getUserById', $user);
     $languageFactory = new MockBaseLanguageFactory();
     $changeset = TestHelper::getPartialMock('Tracker_Artifact_Changeset', array('getUserHelper', 'getUserManager', 'getArtifact', 'getComment', 'getLanguageFactory'));
     $changeset->setReturnValue('getUserHelper', $uh);
     $changeset->setReturnValue('getUserManager', $um);
     $changeset->setReturnValue('getArtifact', $a);
     $changeset->setReturnValue('getLanguageFactory', $languageFactory);
     return $changeset;
 }
 public function setUp()
 {
     parent::setUp();
     $report = new MockTracker_Report();
     $release_tracker_id = 743;
     $release_tracker = aTracker()->withId($release_tracker_id)->build();
     $art_link_release_field_id = 131;
     $art_link_release_field = mock('Tracker_CrossSearch_ArtifactReportField');
     stub($art_link_release_field)->getTracker()->returns($release_tracker);
     stub($art_link_release_field)->getArtifactLinkFieldName()->returns('art_link_' . $art_link_release_field_id);
     $art_link_release_criterion = new Tracker_Report_Criteria(null, $report, $art_link_release_field, 0, true);
     $sprint_tracker_id = 365;
     $sprint_tracker = aTracker()->withId($sprint_tracker_id)->build();
     $art_link_sprint_field_id = 511;
     $art_link_sprint_field = mock('Tracker_CrossSearch_ArtifactReportField');
     stub($art_link_sprint_field)->getTracker()->returns($sprint_tracker);
     stub($art_link_sprint_field)->getArtifactLinkFieldName()->returns('art_link_' . $art_link_sprint_field_id);
     $art_link_sprint_criterion = new Tracker_Report_Criteria(null, $report, $art_link_sprint_field, 0, true);
     $criteria = array($art_link_release_criterion, $art_link_sprint_criterion);
     $this->sprint_id = '354';
     $this->sprint = stub('Tracker_Artifact')->getTitle()->returns('The planning known as Sprint');
     $this->release_id = '666';
     $this->release = stub('Tracker_Artifact')->getTitle()->returns('I release I can fly');
     $artifact_node = new TreeNode();
     $artifact_node->setId(1);
     $artifact_node->setData(array('id' => 123, 'title' => 'foo', 'last_changeset_id' => '567', 'art_link_' . $art_link_sprint_field_id => $this->sprint_id, 'art_link_' . $art_link_release_field_id => $this->release_id));
     $tree_of_artifacts = new TreeNode();
     $tree_of_artifacts->setId(0);
     $tree_of_artifacts->addChild($artifact_node);
     $this->artifact_factory = new MockTracker_ArtifactFactory();
     $factory = new MockTracker_FormElementFactory();
     $tracker = new MockTracker();
     $artifact = new MockTracker_Artifact();
     $this->user = mock('PFUser');
     $artifact->setReturnValue('getTracker', $tracker);
     stub($this->artifact_factory)->getArtifactById(123)->returns($artifact);
     $this->view = new Tracker_CrossSearch_SearchContentView($report, $criteria, $tree_of_artifacts, $this->artifact_factory, $factory, $this->user);
 }
Example #8
0
 function testBeforeShouldTriggerTransitionActionsForNewArtifact()
 {
     $current_user = new MockUser();
     $f = new MockTracker_FormElement_Field_List();
     $f->setReturnValue('getId', 103);
     $v1 = new MockTracker_FormElement_Field_List_Value();
     $v2 = new MockTracker_FormElement_Field_List_Value();
     $v1->setReturnValue('getId', 801);
     $v2->setReturnValue('getId', 802);
     $t1 = new MockTransition();
     $t2 = new MockTransition();
     $t1->setReturnValue('getFieldValueFrom', null);
     $t1->setReturnReference('getFieldValueTo', $v1);
     $t2->setReturnReference('getFieldValueFrom', $v1);
     $t2->setReturnReference('getFieldValueTo', $v2);
     $c = new MockTracker_Artifact_Changeset_Null();
     $a = new MockTracker_Artifact();
     $a->setReturnValue('getLastChangeset', $c);
     $workflow_id = 1;
     $tracker_id = 2;
     $field_id = 103;
     $is_used = 1;
     $transitions = array($t1, $t2);
     $workflow = new Workflow($workflow_id, $tracker_id, $field_id, $is_used, $transitions);
     $workflow->setField($f);
     $workflow->setArtifact($a);
     $fields_data = array('103' => '801');
     $t1->expectOnce('before');
     $t2->expectNever('before', array($fields_data, $current_user));
     $workflow->before($fields_data, $current_user);
 }
Example #9
0
 private function GivenAnArtifact($id)
 {
     $artifact = new MockTracker_Artifact();
     $artifact->expectOnce('fetchDirectLinkToArtifact');
     $artifact->setReturnValue('getId', $id);
     $artifact->setReturnValue('getTracker', new MockTracker());
     return $artifact;
 }