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)); }
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); }
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); }
private function GivenAnArtifact($id) { $artifact = new MockTracker_Artifact(); $artifact->expectOnce('fetchDirectLinkToArtifact'); $artifact->setReturnValue('getId', $id); $artifact->setReturnValue('getTracker', new MockTracker()); return $artifact; }