[TestMethod] public void SetupCopyItemButtonWhenProcessSupportScheduling_GetCrossRefFieldList() { // arrange var parentModel = Mock.Create<BusinessBase>(Behavior.Loose); var expandableStep = new ExpandableStepPropBag(parentModel); var model = Mock.Create<FieldEdit>(Behavior.CallOriginal); var rcrStepEdit = Mock.Create<ReverseCrossRefRequiredStepEdit>(Behavior.CallOriginal); rcrStepEdit.DisplayMultiple = true; const int id = 1; rcrStepEdit.ReverseCrossRefProcess = CreatePublishedProcess(id); const string fieldName = "ResponsibilityPerson_f"; rcrStepEdit.CrossRefFieldName = fieldName; Mock.Arrange(() => rcrStepEdit.IsChild).Returns(true); Mock.Arrange(() => model.StepList).Returns(new StepEditList { rcrStepEdit }); Mock.Arrange(() => expandableStep.Model).Returns(model); var publishedProcess = Mock.Create<PublishedProcessInfo>(); publishedProcess.Id = 1; const int otherProcessId = 2; Mock.Arrange(() => publishedProcess.ProcessId).Returns(otherProcessId); var publishedProcesses = new PublishedProcessesMock(new List<PublishedProcessInfo> { publishedProcess }); var task = new Task<PublishedProcesses>(() => publishedProcesses); task.Start(); Mock.Arrange(() => PublishedProcesses.GetPublishedProcessesAsync(Arg.IsAny<ReverseCrossRefProcessCriteria>())).Returns(task); Mock.Arrange(() => CrossRefFieldList.GetCrossRefFieldList(2, Arg.AnyGuid, Arg.IsAny<EventHandler<DataPortalResult<CrossRefFieldList>>>())). DoInstead((int processId, Guid parentProcessGuid, EventHandler<DataPortalResult<CrossRefFieldList>> callback) => callback(null, new DataPortalResult<CrossRefFieldList>(null, new Exception(), null))); var privateAccessor = new PrivateAccessor(expandableStep); // act privateAccessor.CallMethod("SetupCopyItemButtonWhenFieldIsReverseReference", new object[] { Guid.Empty }); // assert Assert.IsFalse(expandableStep.CopyItemButtonIsEnabled); // arrange Mock.Arrange(() => CrossRefFieldList.GetCrossRefFieldList(2, Arg.AnyGuid, Arg.IsAny<EventHandler<DataPortalResult<CrossRefFieldList>>>())). DoInstead((int processId, Guid parentProcessGuid, EventHandler<DataPortalResult<CrossRefFieldList>> callback) => callback(null, new DataPortalResult<CrossRefFieldList>(new CrossRefFieldList(), null, null))); // act privateAccessor.CallMethod("SetupCopyItemButtonWhenFieldIsReverseReference", new object[] { Guid.Empty }); // assert Assert.IsFalse(expandableStep.CopyItemButtonIsEnabled); // arrange Mock.Arrange(() => CrossRefFieldList.GetCrossRefFieldList(2, Arg.AnyGuid, Arg.IsAny<EventHandler<DataPortalResult<CrossRefFieldList>>>())). DoInstead((int processId, Guid parentProcessGuid, EventHandler<DataPortalResult<CrossRefFieldList>> callback) => callback(null, new DataPortalResult<CrossRefFieldList>(new CrossRefFieldListMock(new List<CrossRefFieldInfo> { Mock.Create<CrossRefFieldInfo>(Behavior.CallOriginal) }), null, null))); // act privateAccessor.CallMethod("SetupCopyItemButtonWhenFieldIsReverseReference", new object[] { Guid.Empty }); // assert Assert.IsFalse(expandableStep.CopyItemButtonIsEnabled); // arrange var crossRefFieldInfo1 = Mock.Create<CrossRefFieldInfo>(Behavior.CallOriginal); Mock.Arrange(() => crossRefFieldInfo1.SystemName).Returns("eCarNumber_f"); var crossRefFieldInfo2 = Mock.Create<CrossRefFieldInfo>(Behavior.CallOriginal); Mock.Arrange(() => crossRefFieldInfo2.SystemName).Returns(fieldName); Mock.Arrange(() => CrossRefFieldList.GetCrossRefFieldList(2, Arg.AnyGuid, Arg.IsAny<EventHandler<DataPortalResult<CrossRefFieldList>>>())). DoInstead((int processId, Guid parentProcessGuid, EventHandler<DataPortalResult<CrossRefFieldList>> callback) => callback(null, new DataPortalResult<CrossRefFieldList>(new CrossRefFieldListMock(new List<CrossRefFieldInfo> { crossRefFieldInfo1, crossRefFieldInfo2 }), null, null))); // act privateAccessor.CallMethod("SetupCopyItemButtonWhenFieldIsReverseReference", new object[] { Guid.Empty }); // assert Assert.IsFalse(expandableStep.CopyItemButtonIsEnabled); // arrange Mock.Arrange(() => crossRefFieldInfo2.AllowMany).Returns(true); // act privateAccessor.CallMethod("SetupCopyItemButtonWhenFieldIsReverseReference", new object[] { Guid.Empty }); // assert Assert.IsTrue(expandableStep.CopyItemButtonIsEnabled);
[TestMethod] public void SetupCopyItemButtonWhenFieldIsReverseReference_GetPublishedProcessesAsync_ReturnFour_4() { // arrange var parentModel = Mock.Create<BusinessBase>(Behavior.Loose); var expandableStep = new ExpandableStepPropBag(parentModel); var model = Mock.Create<FieldEdit>(Behavior.CallOriginal); var rcrStepEdit = Mock.Create<ReverseCrossRefRequiredStepEdit>(Behavior.CallOriginal); rcrStepEdit.DisplayMultiple = true; const int id = 1; rcrStepEdit.ReverseCrossRefProcess = CreatePublishedProcess(id); rcrStepEdit.CrossRefFieldName = "ResponsibilityPerson_f"; Mock.Arrange(() => rcrStepEdit.IsChild).Returns(true); Mock.Arrange(() => model.StepList).Returns(new StepEditList { rcrStepEdit }); Mock.Arrange(() => expandableStep.Model).Returns(model); var publishedProcesses = new PublishedProcessesMock(new List<PublishedProcessInfo> { new PublishedProcessInfo { Id = id } }); Mock.Arrange(() => PublishedProcesses.GetPublishedProcessesAsync(Arg.IsAny<ReverseCrossRefProcessCriteria>())) .Returns(() => { var tcs = new TaskCompletionSource<PublishedProcesses>(); tcs.SetResult(publishedProcesses); return tcs.Task; }); try { // act new PrivateAccessor(expandableStep).CallMethod("SetupCopyItemButtonWhenFieldIsReverseReference", new object[] { Guid.Empty }); } catch (Exception ex) { // assert Assert.Fail("Expected no exception, but got: " + ex.Message); }