示例#1
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);
 }
 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());
 }
 function testDiffToPrevious()
 {
     $field1 = new MockTracker_FormElement_Field_Date();
     $value1_previous = new MockTracker_Artifact_ChangesetValue_Date();
     $value1_current = new MockTracker_Artifact_ChangesetValue_Date();
     $field2 = new MockTracker_FormElement_Field_Date();
     $value2_previous = new MockTracker_Artifact_ChangesetValue_Date();
     $value2_current = new MockTracker_Artifact_ChangesetValue_Date();
     $dao = new MockTracker_Artifact_Changeset_ValueDao();
     $dar = new MockDataAccessResult();
     $fact = new MockTracker_FormElementFactory();
     $value = new MockTracker_Artifact_ChangesetValue_Date();
     $artifact = new MockTracker_Artifact();
     $previous_changeset = new MockTracker_Artifact_Changeset();
     $um = new MockUserManager();
     $current_changeset = new Tracker_Artifact_ChangesetTestVersion();
     $previous_changeset->setReturnValue('getId', 65);
     $previous_changeset->setReturnReference('getValue', $value1_previous, array($field1));
     $previous_changeset->setReturnReference('getValue', $value2_previous, array($field2));
     $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->setReturnValueAt(1, 'current', array('changeset_id' => 66, 'field_id' => 2, 'id' => 21, 'has_changed' => 0));
     $dar->setReturnValue('valid', true);
     $dar->setReturnValueAt(2, 'valid', false);
     $dao->setReturnReference('searchById', $dar);
     $fact->setReturnReference('getFieldById', $field1, array(1));
     $fact->setReturnReference('getFieldById', $field2, array(2));
     $field1->setReturnValue('getId', 1);
     $field1->setReturnValue('getLabel', 'field1');
     $field1->setReturnValue('userCanRead', true);
     $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, '*'));
     $field2->setReturnValue('getId', 2);
     $field2->setReturnValue('getLabel', 'field2');
     $field2->setReturnValue('userCanRead', true);
     $field2->setReturnReference('getChangesetValue', $value2_current, array('*', 21, 0));
     $value2_previous->expectNever('hasChanged');
     $value2_current->setReturnValue('hasChanged', false);
     $value2_current->expectNever('diff');
     $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);
     $this->assertPattern('/field1/', $current_changeset->diffToprevious());
     $this->assertNoPattern('/field2/', $current_changeset->diffToprevious());
 }
 function testIsValidRequiredFieldWithoutExistingValues()
 {
     $f = new Tracker_FormElement_Field_ArtifactLinkTestVersion();
     $f->setReturnValue('isRequired', true);
     $rai = new MockTracker_Valid_Rule_ArtifactId();
     $rai->setReturnValue('isValid', true, array('123'));
     $rai->setReturnValue('isValid', true, array('321'));
     $rai->setReturnValue('isValid', true, array('999'));
     $rai->setReturnValue('isValid', false, array('666'));
     $rai->setReturnValue('isValid', false, array('toto'));
     $f->setReturnReference('getRuleArtifactId', $rai);
     $ids = array();
     $cv = new MockTracker_Artifact_ChangesetValue_ArtifactLink();
     $cv->setReturnReference('getArtifactIds', $ids);
     $c = new MockTracker_Artifact_Changeset();
     $c->setReturnReference('getValue', $cv);
     $a = new MockTracker_Artifact();
     $a->setReturnReference('getLastChangeset', $c);
     $this->assertTrue($f->isValid($a, array('new_values' => '123')));
     $this->assertFalse($f->isValid($a, array('new_values' => '666')));
     $this->assertFalse($f->isValid($a, array('new_values' => '123, 666')));
     $this->assertFalse($f->isValid($a, array('new_values' => '123,666')));
     $this->assertTrue($f->isValid($a, array('new_values' => '123          ,   321, 999')));
     $this->assertFalse($f->isValidRegardingRequiredProperty($a, array('new_values' => '')));
     $this->assertFalse($f->isValid($a, array('new_values' => '123, toto')));
     $this->assertFalse($f->isValidRegardingRequiredProperty($a, null));
 }
示例#5
0
 function testDontCreateNewChangesetIfNoCommentOrNoChanges()
 {
     $this->language->setReturnValue('getText', 'no changes', array('plugin_tracker_artifact', 'no_changes', '*'));
     $this->response->expectOnce('addFeedback', array('info', 'no changes', CODENDI_PURIFIER_LIGHT));
     $comment_dao = new MockTracker_Artifact_Changeset_CommentDao();
     $comment_dao->expectNever('createNewVersion');
     $dao = new MockTracker_Artifact_ChangesetDao();
     $dao->expectNever('create');
     $user = new MockUser();
     $user->setReturnValue('getId', 1234);
     $user->setReturnValue('isAnonymous', false);
     $tracker = new MockTracker();
     $factory = new MockTracker_FormElementFactory();
     $rules_manager = new MockTracker_RulesManager();
     $rules_manager->setReturnValue('validate', true);
     $tracker->setReturnReference('getRulesManager', $rules_manager);
     $field1 = new MockTracker_FormElement_Field();
     $field1->setReturnValue('getId', 101);
     $field1->setReturnValue('isValid', true);
     $field1->setReturnValue('userCanUpdate', true);
     $field1->expectNever('saveNewChangeset');
     $field2 = new MockTracker_FormElement_Field();
     $field2->setReturnValue('getId', 102);
     $field2->setReturnValue('isValid', true);
     $field2->setReturnValue('userCanUpdate', true);
     $field2->expectNever('saveNewChangeset');
     $field3 = new MockTracker_FormElement_Field();
     $field3->setReturnValue('getId', 103);
     $field3->setReturnValue('isValid', true);
     $field3->setReturnValue('userCanUpdate', true);
     $field3->expectNever('saveNewChangeset');
     $factory->setReturnValue('getUsedFields', array($field1, $field2, $field3));
     $changeset = new MockTracker_Artifact_Changeset();
     $changeset->setReturnValue('hasChanges', false);
     $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));
     $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);
     $workflow = new MockWorkflow();
     $workflow->expectNever('before');
     $artifact->setReturnValue('getWorkflow', $workflow);
     $email = null;
     //not annonymous user
     $comment = '';
     //empty comment
     // Valid
     $fields_data = array();
     $artifact->createNewChangeset($fields_data, $comment, $user, $email);
 }