function testCreateInitialChangesetWithWorkflowAndNoPermsOnPostActionField() { $dao = new MockTracker_Artifact_ChangesetDao(); $dao->setReturnValueAt(0, 'create', 1001, 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(); $factory = new MockTracker_FormElementFactory(); $tracker->setReturnValue('getFormElements', array()); $artifact = new Tracker_ArtifactTestVersion(); $workflow = new MockWorkflow_Tracker_ArtifactTest_WorkflowNoPermsOnPostActionFields(); $workflow->expectOnce('before'); $workflow->setReturnValue('validate', true); $artifact->setReturnValue('getWorkflow', $workflow); $field1 = new MockTracker_FormElement_Field(); $field1->setReturnValue('getId', 101); $field1->setReturnValue('isValid', true); $field1->setReturnValue('isValidRegardingRequiredProperty', true); $workflow->setReturnValue('bypassPermissions', false, array($field1)); $field1->expectOnce('saveNewChangeset'); $field1->setReturnValue('userCanSubmit', true); $field2 = new MockTracker_FormElement_Field(); $field2->setReturnValue('getId', 102); $field2->setReturnValue('isValid', true); $field2->setReturnValue('isValidRegardingRequiredProperty', true); $field2->setReturnValue('userCanSubmit', false); $workflow->setReturnValue('bypassPermissions', true, array($field2)); $field2->expectOnce('saveNewChangeset', array('*', '*', '*', '*', $user, true, true)); $factory->setReturnValue('getUsedFields', array($field1, $field2)); $factory->setReturnValue('getAllFormElementsForTracker', array()); $art_factory = new MockTracker_ArtifactFactory(); $artifact->setReturnReference('getChangesetDao', $dao); $artifact->setReturnReference('getFormElementFactory', $factory); $artifact->setReturnReference('getTracker', $tracker); $artifact->setReturnValue('getId', 66); $artifact->setReturnReference('getArtifactFactory', $art_factory); $artifact->setReturnValue('getLastChangeset', mock('Tracker_Artifact_Changeset_Null')); $artifact->setReturnValue('getChangeset', mock('Tracker_Artifact_Changeset_Null')); $art_factory->expectOnce('save'); $email = null; //not annonymous user // Valid $fields_data = array(101 => '123'); $this->assertEqual($artifact->createInitialChangeset($fields_data, $user, $_SERVER['REQUEST_TIME']), 1001); }
function testCreateNewChangesetWithWorkflowAndNoPermsOnPostActionField() { $email = null; //not anonymous user $comment = ''; $comment_dao = new MockTracker_Artifact_Changeset_CommentDao(); $comment_dao->expectCallCount('createNewVersion', 1); $dao = new MockTracker_Artifact_ChangesetDao(); $dao->setReturnValueAt(0, 'create', 1001, array(66, 1234, null)); $dao->setReturnValueAt(1, 'create', 1002, array(66, 1234, null)); $dao->expectCallCount('create', 1); $user = new MockUser(); $user->setReturnValue('getId', 1234); $user->setReturnValue('isAnonymous', false); $tracker = new MockTracker(); $tracker->setReturnValue('getGroupId', 666); $tracker->setReturnValue('getItemName', 'foobar'); $factory = new MockTracker_FormElementFactory(); $rules_manager = new MockTracker_RulesManager(); $rules_manager->setReturnValue('validate', true); $tracker->setReturnReference('getRulesManager', $rules_manager); $artifact = new Tracker_ArtifactTestVersion(); $workflow = new MockWorkflow_Tracker_ArtifactTest_WorkflowNoPermsOnPostActionFields(); $workflow->expectOnce('before'); $artifact->setReturnValue('getWorkflow', $workflow); $field1 = new MockTracker_FormElement_Field(); $field1->setReturnValue('getId', 101); $field1->setReturnValue('isValid', true); $field1->setReturnValue('userCanUpdate', true); $workflow->setReturnValue('bypassPermissions', false, array($field1)); $field1->expectOnce('saveNewChangeset'); $field2 = new MockTracker_FormElement_Field(); $field2->setReturnValue('getId', 102); $field2->setReturnValue('isValid', true); $field2->setReturnValue('userCanUpdate', false); $workflow->setReturnValue('bypassPermissions', true, array($field2)); $field2->expectOnce('saveNewChangeset', array('*', '*', '*', '*', $user, false, true)); $factory->setReturnValue('getUsedFields', array($field1, $field2)); $new_changeset = new MockTracker_Artifact_Changeset(); $new_changeset->expect('notify', array()); $changeset = new MockTracker_Artifact_Changeset(); $changeset->setReturnValue('hasChanges', true); $changeset_value1 = new MockTracker_Artifact_ChangesetValue(); $changeset->setReturnReference('getValue', $changeset_value1, array($field1)); $reference_manager = new MockReferenceManager(); $reference_manager->expect('extractCrossRef', array($comment, 66, 'plugin_tracker_artifact', 666, $user->getId(), 'foobar')); $art_factory = new MockTracker_ArtifactFactory(); $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); $art_factory->expectOnce('save'); // Valid $fields_data = array(101 => '123'); $artifact->createNewChangeset($fields_data, $comment, $user, $email); }