public void TestOnStepAsyncAtCancel() { GeneralThreadAffineContext.Run( async () => { Mock.Arrange(() => Application.Current.Dispatcher.InvokeAsync(null)) .IgnoreArguments() .DoNothing(); var managementMock = Mock.Create<CollectionsManagementViewModel>(Behavior.CallOriginal); var editQueueMock = Mock.Create<EditQueueViewModel>( Behavior.CallOriginal, managementMock); Mock.NonPublic.Arrange<Task>(editQueueMock, "UnLockAsync").Returns(Task.Run(() => { })); Mock.Arrange(() => editQueueMock.SelectedQueue).Returns(new QueueDetailsModel()); Mock.Arrange( () => managementMock.OnStepAsync(CollectionsManagementViewModel.EnumSteps.SelectQueue)) .Returns(Task.Run(() => { })); var mainView = new PrivateAccessor(editQueueMock); mainView.SetProperty("IsCheckedOut", true); await editQueueMock.OnStepAsync(EditQueueViewModel.EnumSteps.Cancel); bool isCheckedOutOnMainViewModel = mainView.GetProperty("IsCheckedOut") is bool && (bool)mainView.GetProperty("IsCheckedOut"); Assert.IsFalse(isCheckedOutOnMainViewModel); }); }
public void PrivateAccessor_ShouldGetSetProperty() { // ACT // Wrapping the instance holding the private property. var inst = new PrivateAccessor(new ClassWithNonPublicMembers()); // Setting the value of the private property. inst.SetProperty("Prop", 555); // ASSERT - Asserting with getting the value of the private property. Assert.AreEqual(555, inst.GetProperty("Prop")); }
public void IsSelectedPropertyTests() { var tvrs = new TreeViewRequiredStepEdit { DisplayFields = new TreeViewDisplayFields() }; var tree = new TreeViewRequiredStepViewModel(tvrs, new StepInfo(), new ProcessFieldViewModel(new FieldEdit(), new ProcessSectionViewModel(new SectionEdit()))); // Arrange var mockedClass = Mock.Create<TreeViewDisplayFieldViewModel>(Behavior.Loose); Mock.NonPublic.Arrange<ITreeViewRequiredStepViewModel>(mockedClass, "ParentStepViewModel").Returns(tree); // Act var inst = new PrivateAccessor(mockedClass); inst.SetProperty("IsSelected", true); var vm = inst.GetProperty("ParentStepViewModel"); // Assert Assert.IsNotNull(vm); }
public void GetSystemOptions() { // arrange var vm = new FieldFileViewModel(); Mock.Arrange(() => Arg.IsAny<SystemPathsInfo>().BeginGetSystemPathsAsync()).Throws<Exception>(); var logger = Mock.Create<ILogger>(Behavior.CallOriginal); var logWasCalled = false; Mock.Arrange(() => logger.Log(LogSeverity.Error, typeof(FieldFileViewModel).ToString(), Arg.IsAny<Exception>())).DoInstead(() => logWasCalled = true); vm.Logger = logger; var privateAccessor = new PrivateAccessor(vm); // act privateAccessor.CallMethod("GetSystemOptions"); // assert Assert.AreEqual("Invalid System Paths. Contact your administrator, please.", vm.Message); var exceptionMessage = (string)privateAccessor.GetProperty("ExceptionMessage"); Assert.IsTrue(exceptionMessage.StartsWith(new Exception().ToString())); Assert.AreEqual(FileControlMode.NotifyFail, vm.CurrentState); Assert.IsTrue(logWasCalled); // arrange vm.Message = null; privateAccessor.SetProperty("ExceptionMessage", new Exception().ToString()); vm.CurrentState = FileControlMode.Download; var systemPathsInfo = Mock.Create<SystemPathsInfo>(Behavior.Loose); var task = new Task<SystemPathsInfo>(() => systemPathsInfo); task.RunSynchronously(); Mock.Arrange(() => Arg.IsAny<SystemPathsInfo>().BeginGetSystemPathsAsync()).Returns(() => task); // act privateAccessor.CallMethod("GetSystemOptions"); // assert Assert.AreEqual("System Paths in System Option menu is empty. Please fill in before using FileControl", vm.Message); Assert.IsNull(privateAccessor.GetProperty("ExceptionMessage")); Assert.AreEqual(FileControlMode.NotifyFail, vm.CurrentState); // arrange vm.Message = null; privateAccessor.SetProperty("ExceptionMessage", new Exception().ToString()); vm.CurrentState = FileControlMode.Download; Mock.Arrange(() => systemPathsInfo.FileUploadURI).Returns("http://*****:*****@"D:\Projects\Cebos\Veyron\Cebos.Veyron.Web\FileStorage"); var navigateUriWasRaises = false; Mock.NonPublic.Arrange(vm, "RaisePropertyChanged", "NavigateUri").DoInstead(() => navigateUriWasRaises = true); // act privateAccessor.CallMethod("GetSystemOptions"); Assert.AreEqual("http://localhost:5558/FileUploadHandler.ashx", vm.UploadServiceUrl); Assert.AreEqual("/FileStorage", vm.TargetFolder); Assert.AreEqual("http://localhost:5558/", vm.DocHandlerUrl); Assert.IsTrue(navigateUriWasRaises); }
public void Save() { // arrange var vm = new FieldFileViewModel(); var fileProcess = Mock.Create<IFileProcess>(Behavior.Loose); fileProcess.OriginalFileName = "1.txt"; Mock.NonPublic.Arrange<IFileProcess>(vm, "CurrentFileProcess").Returns(fileProcess); var newValue = Mock.Create<IFileProcess>(Behavior.Loose); var dataPortalResult = new DataPortalResult<IFileProcess>(newValue, null, null); Mock.Arrange(() => fileProcess.BeginSaveNew(Arg.IsAny<Action<object, IDataPortalResult>>())) .DoInstead<Action<object, IDataPortalResult>>(a => a(null, dataPortalResult)); var privateAccessor = new PrivateAccessor(vm); // act privateAccessor.CallMethod("Save"); // assert Assert.AreEqual(newValue, vm.Value); Assert.AreEqual("File '1.txt' uploaded successfully.", vm.Message); Assert.AreEqual(FileControlMode.NotifySuccess, privateAccessor.GetField("_previousState")); // arrange dataPortalResult = new DataPortalResult<IFileProcess>(null, new Exception(), null); // act privateAccessor.CallMethod("Save"); // assert Assert.AreEqual("Error uploading file.", vm.Message); Assert.AreEqual(new Exception().ToString(), privateAccessor.GetProperty("ExceptionMessage")); Assert.AreEqual(FileControlMode.NotifyFail, privateAccessor.GetField("_previousState")); // arrange fileProcess.Id = 1; vm.Value = null; dataPortalResult = new DataPortalResult<IFileProcess>(newValue, null, null); Mock.Arrange(() => fileProcess.BeginUnlock(Arg.IsAny<Action<object, IDataPortalResult>>())) .DoInstead<Action<object, IDataPortalResult>>(a => a(null, dataPortalResult)); // act privateAccessor.CallMethod("Save"); // assert Assert.AreEqual(newValue, vm.Value); Assert.AreEqual("File '1.txt' uploaded successfully.", vm.Message); Assert.AreEqual(FileControlMode.NotifySuccess, vm.CurrentState); // arrange vm.Message = null; privateAccessor.SetProperty("ExceptionMessage", null); dataPortalResult = new DataPortalResult<IFileProcess>(null, new Exception(), null); var logger = Mock.Create<ILogger>(Behavior.CallOriginal); var logWasCalled = false; Mock.Arrange(() => logger.Log(LogSeverity.Error, typeof(FieldFileViewModel).ToString(), Arg.IsAny<Exception>())).DoInstead(() => logWasCalled = true); vm.Logger = logger; // act privateAccessor.CallMethod("Save"); // assert Assert.AreEqual(string.Format(@"Error saving instance of new uploaded file{0}Please try again{0}If the problem persists, try to create a new record, and re-check the System Options\System Paths", Environment.NewLine), vm.Message); Assert.AreEqual(new Exception().ToString(), privateAccessor.GetProperty("ExceptionMessage")); Assert.AreEqual(FileControlMode.NotifyFail, vm.CurrentState); Assert.IsTrue(logWasCalled); }
[Ignore] //Ignored because throws System.OutOfMemoryException public void OnUploadFinished() { // arrange var vm = new FieldFileViewModel(); var privateAccessor = new PrivateAccessor(vm); privateAccessor.SetProperty("UploadError", true); var fileProcess = Mock.Create<IFileProcess>(Behavior.Loose); fileProcess.IsUploading = true; fileProcess.OriginalFileName = "1.doc"; fileProcess.FileName = "EEE6B881-F39E-4CD0-9B0B-6CF777DCD1DA.doc"; Mock.NonPublic.Arrange<IFileProcess>(vm, "CurrentFileProcess").Returns(fileProcess); Mock.NonPublic.Arrange<string>(vm, "Message1").Throws<Exception>(); try { // act vm.OnUploadFinished(null, null); } catch (Exception ex) { // assert Assert.Fail("Expected no exception, but got: " + ex.Message); } // assert Assert.IsFalse(fileProcess.IsUploading); // arrange privateAccessor.SetProperty("UploadError", false); Mock.NonPublic.Arrange<string>(vm, "Message1").CallOriginal(); Mock.Arrange(() => fileProcess.BeginUploadFile(Arg.IsAny<Action<Exception>>())).DoInstead<Action<Exception>>(a => a(null)); Mock.NonPublic.Arrange<IFileProcess>(vm, "CurrentFileProcess").Returns(fileProcess); var saveWasCalled = false; Mock.NonPublic.Arrange(vm, "Save").DoInstead(() => saveWasCalled = true); // act vm.OnUploadFinished(null, null); // assert Assert.AreEqual("File '1.doc' uploaded successfully.", vm.Message); Assert.AreEqual(FileControlMode.NotifySuccess, vm.CurrentState); Assert.IsTrue(saveWasCalled); Assert.AreEqual("1.doc", fileProcess.OriginalFileName); Assert.AreEqual("EEE6B881-F39E-4CD0-9B0B-6CF777DCD1DA.doc", fileProcess.FileName); // arrange saveWasCalled = false; var logger = Mock.Create<ILogger>(Behavior.CallOriginal); Mock.Arrange(() => logger.Log(LogSeverity.Warning, typeof(FieldFileViewModel).ToString(), Arg.IsAny<Exception>())).DoNothing().MustBeCalled(); vm.Logger = logger; Mock.Arrange(() => fileProcess.BeginUploadFile(Arg.IsAny<Action<Exception>>())).DoInstead<Action<Exception>>(action => action(new Exception())); fileProcess.FileName = Guid.NewGuid() + ".doc"; // act vm.OnUploadFinished(null, null); // assert Assert.IsFalse(saveWasCalled); Assert.IsNull(fileProcess.OriginalFileName); Assert.IsNull(fileProcess.FileName); Assert.AreEqual("Error uploading file.", vm.Message); Assert.AreEqual(new Exception().ToString(), privateAccessor.GetProperty("ExceptionMessage")); Assert.AreEqual(FileControlMode.NotifyFail, vm.CurrentState); Mock.Assert(logger); // arrange fileProcess.OriginalFileName = "1.doc"; fileProcess.FileName = Guid.NewGuid() + ".doc"; vm.Message = null; privateAccessor.SetProperty("ExceptionMessage", null); vm.CurrentState = FileControlMode.Download; var lavel1WcfErrorInfo = new WcfErrorInfo(); var lavel2WcfErrorInfo = new WcfErrorInfo(); var lavel3WcfErrorInfo = new WcfErrorInfo(); lavel1WcfErrorInfo.InnerError = lavel2WcfErrorInfo; lavel2WcfErrorInfo.InnerError = lavel3WcfErrorInfo; lavel3WcfErrorInfo.ExceptionTypeName = typeof(DirectoryNotFoundException).FullName; lavel3WcfErrorInfo.Message = @"Directory D:\ImportantFiles\ not found"; lavel3WcfErrorInfo.StackTrace = "at ..., at ..."; var exception = new DataPortalException(lavel1WcfErrorInfo); //dataPortalResult = new DataPortalResult<FileControlUploadFileCommand>(null, exception, null); Mock.Arrange(() => fileProcess.BeginUploadFile(Arg.IsAny<Action<Exception>>())).DoInstead<Action<Exception>>(action => action(exception)); // act vm.OnUploadFinished(null, null); // assert Assert.IsFalse(saveWasCalled); Assert.IsNull(fileProcess.OriginalFileName); Assert.IsNull(fileProcess.FileName); Assert.AreEqual("Error uploading file.", vm.Message); Assert.AreEqual(string.Format(@"System.IO.DirectoryNotFoundException{0}Directory D:\ImportantFiles\ not found{0}at ..., at ...", Environment.NewLine), privateAccessor.GetProperty("ExceptionMessage")); Assert.AreEqual(FileControlMode.NotifyFail, vm.CurrentState); // arrange fileProcess.OriginalFileName = "1.doc"; fileProcess.FileName = Guid.NewGuid() + ".doc"; vm.Message = null; privateAccessor.SetProperty("ExceptionMessage", null); vm.CurrentState = FileControlMode.Download; lavel3WcfErrorInfo.ExceptionTypeName = typeof(WebException).FullName; lavel3WcfErrorInfo.Message = "Host not responding"; lavel3WcfErrorInfo.StackTrace = "at ..., at ..."; // act vm.OnUploadFinished(null, null); // assert Assert.IsFalse(saveWasCalled); Assert.IsNull(fileProcess.OriginalFileName); Assert.IsNull(fileProcess.FileName); Assert.AreEqual("DocumentProcessor service is not responding. Please contact your administrator to make sure it is running and 'File Processor URI' is set correcltly in the Control Panel.", vm.Message); Assert.AreEqual(string.Format(@"System.Net.WebException{0}Host not responding{0}at ..., at ...", Environment.NewLine), privateAccessor.GetProperty("ExceptionMessage")); Assert.AreEqual(FileControlMode.NotifyFail, vm.CurrentState); // arrange fileProcess.OriginalFileName = "1.doc"; fileProcess.FileName = Guid.NewGuid() + ".doc"; vm.Message = null; privateAccessor.SetProperty("ExceptionMessage", null); vm.CurrentState = FileControlMode.Download; lavel3WcfErrorInfo.ExceptionTypeName = typeof(FileNotFoundException).FullName; lavel3WcfErrorInfo.Message = @"File D:\ImportantFiles\1.doc not exists"; lavel3WcfErrorInfo.StackTrace = "at ..., at ..."; // act vm.OnUploadFinished(null, null); // assert Assert.IsFalse(saveWasCalled); Assert.IsNull(fileProcess.OriginalFileName); Assert.IsNull(fileProcess.FileName); Assert.AreEqual(string.Format(@"Uploaded file in temp location was not found{0}Please verify System Options\System Paths", Environment.NewLine), vm.Message); Assert.AreEqual(string.Format(@"System.IO.FileNotFoundException{0}File D:\ImportantFiles\1.doc not exists{0}at ..., at ...", Environment.NewLine), privateAccessor.GetProperty("ExceptionMessage")); Assert.AreEqual(FileControlMode.NotifyFail, vm.CurrentState); }
public void OnNotificationMessageChanged_WhenHasValue_SetShowNotificationToTrue() { var connectorThumb = new ConnectorThumb(); var privateAccessor = new PrivateAccessor(connectorThumb); privateAccessor.SetProperty("NotificationMessage", "some text"); Assert.IsTrue(connectorThumb.ShowNotification); }
public void OnShowNotificationChanged_WhenFalse_ClearNotificationMessage() { var connectorThumb = new ConnectorThumb(); var privateAccessor = new PrivateAccessor(connectorThumb); Mock.NonPublic.Arrange(connectorThumb, "OnNotificationMessageChanged", ArgExpr.IsAny<DependencyObject>(), ArgExpr.IsAny<DependencyPropertyChangedEventArgs>()) .DoNothing(); privateAccessor.SetProperty("NotificationMessage", "some text"); connectorThumb.ShowNotification = true; connectorThumb.ShowNotification = false; Assert.IsNull(connectorThumb.NotificationMessage); }
public void TestOnStepAsyncSelectTranche_SetSelectedTranche() { GeneralThreadAffineContext.Run( async () => { // Mock enviroment for test Mock.Arrange(() => Application.Current.Dispatcher.InvokeAsync(null)) .IgnoreArguments() .DoNothing(); FundingSummaryViewModel fundingSummary; ExistingTrancheViewModel existingTranche; // Create mock fundingSummary = Mock.Create<FundingSummaryViewModel>(Behavior.CallOriginal); // fundingDetail = Mock.Create<FundingDetailsViewModel>( // x => // { // x.CallConstructor(() => new FundingDetailsViewModel(fundingSummary)); // x.SetBehavior(Behavior.CallOriginal); // }); existingTranche = Mock.Create<ExistingTrancheViewModel>( x => { x.CallConstructor(() => new ExistingTrancheViewModel(fundingSummary)); x.SetBehavior(Behavior.CallOriginal); }); fundingSummary.CanEdit = true; // Create mock static class Mock.SetupStatic(typeof(FundingFunctions), StaticConstructor.Mocked); Mock.SetupStatic(typeof(ExistingTrancheViewModel), StaticConstructor.Mocked); // Fake data // Mock.Arrange(() => fundingDetail.OnStepAsync(FundingDetailsViewModel.EnumStep.Start)) // .IgnoreArguments() // .Returns(() => Task.Run(() => { })); Mock.Arrange(() => FundingFunctions.GetFundingTrancheAsync(Arg.IsAny<int>())).IgnoreArguments() .Returns(FakeDataFunding.FakeDataFundingSummary.FakeFundingTranche()); Mock.Arrange(() => fundingSummary.SelectedTranche) .Returns(await FakeDataFunding.FakeDataFundingSummary.FakeSelectedTranche()); Mock.Arrange(() => existingTranche.SetTrancheIdAsync(Arg.IsAny<int>())).Returns(Task.Run(() => { })); // Fake data for private property var priva = new PrivateAccessor(fundingSummary); priva.SetProperty("ExistingTrancheViewModel", existingTranche); Mock.Arrange( () => fundingSummary.FundingDetails.OnStepAsync(FundingDetailsViewModel.EnumStep.TrancheSelected)) .IgnoreArguments() .Returns(() => Task.Run(() => { })); // Run method await fundingSummary.OnStepAsync("SelectTranche"); // Test action command var actual = fundingSummary.ActionCommands; Assert.AreEqual(1, actual.Count); Assert.AreEqual("CreateNew", actual.First().Parameter); }); }
public void TestOnStepAsyncTrancheAdded_AddTrancheInExistingSummary() { GeneralThreadAffineContext.Run( async () => { // Mock enviroment for test Mock.Arrange(() => Application.Current.Dispatcher.InvokeAsync(null)) .IgnoreArguments() .DoNothing(); FundingSummaryViewModel fundingSummary; ExistingTrancheViewModel existingTranche; // Create mock fundingSummary = Mock.Create<FundingSummaryViewModel>(Behavior.CallOriginal); Mock.SetupStatic(typeof(FundingFunctions), StaticConstructor.Mocked); existingTranche = Mock.Create<ExistingTrancheViewModel>( x => { x.CallConstructor(() => new ExistingTrancheViewModel(fundingSummary)); x.SetBehavior(Behavior.CallOriginal); }); // Fake data for private property var priva = new PrivateAccessor(fundingSummary); priva.SetProperty("ExistingTrancheViewModel", existingTranche); // Fake data fundingSummary.AddedTrancheId = 1; Mock.Arrange(() => fundingSummary.FundingDetails) .Returns(new FundingDetailsViewModel(fundingSummary)); Mock.Arrange(() => existingTranche.SetTrancheIdAsync(Arg.IsAny<int>())).Returns(Task.Run(() => { })); Mock.Arrange(() => FundingFunctions.GetAllTranchesAsync()) .Returns(FakeDataFunding.FakeDataFundingSummary.FakeFundingSummaryList()); // Run method await fundingSummary.OnStepAsync("TrancheAdded"); // Test // Test fundingDetail.BusyContent is null and IsBusy is false var actual = fundingSummary.FundingDetails; // Test value TrancheSummary var actual2 = fundingSummary.TrancheSummary; // Test SelectedTranche has value var actual3 = fundingSummary.SelectedTranche; Assert.AreEqual(string.Empty, actual.BusyContent); Assert.IsFalse(actual.IsBusy); Assert.AreEqual(2, actual2.Count); Assert.AreEqual(1, actual3.TrancheId); }); }
public void TestOnStepAsyncStart_LoadNewTrancheSummary() { GeneralThreadAffineContext.Run( async () => { // Mock enviroment for test Mock.Arrange(() => Application.Current.Dispatcher.InvokeAsync(null)) .IgnoreArguments() .DoNothing(); FundingSummaryViewModel fundingSummary; NewTrancheViewModel newTranche; // Create mock fundingSummary = Mock.Create<FundingSummaryViewModel>(Behavior.CallOriginal); newTranche = Mock.Create<NewTrancheViewModel>( x => { x.CallConstructor(() => new NewTrancheViewModel(fundingSummary)); x.SetBehavior(Behavior.CallOriginal); }); // Mock.Arrange(() => FundingFunctions.GetFundingTrancheAsync(Arg.IsAny<int>())).IgnoreArguments() // .Returns(FakeDataFunding.FakeDataFundingSummary.FakeFundingTranche()); // Mock.Arrange(() => fundingSummary.SelectedTranche) // .Returns(await FakeDataFunding.FakeDataFundingSummary.FakeSelectedTranche()); // Fake data for private property var priva = new PrivateAccessor(fundingSummary); priva.SetProperty("NewTrancheViewModel", newTranche); Mock.Arrange( () => newTranche.OnStepAsync(FundingDetailsViewModel.EnumStep.Start)) .IgnoreArguments() .Returns(() => Task.Run(() => { })); // Run method await fundingSummary.OnStepAsync("CreateNew"); // Test action command var actual = fundingSummary.ActionCommands; Assert.IsNull(actual); }); }
public void TestOnStepAsyncSave_AddedTrancheId() { GeneralThreadAffineContext.Run( async () => { Mock.Arrange(() => Application.Current.Dispatcher.InvokeAsync(null)) .IgnoreArguments() .DoNothing(); // Create mock var summaryViewModel = Mock.Create<FundingSummaryViewModel>( new Constructor(), Behavior.CallOriginal); var existingTranche = Mock.Create<ExistingTrancheViewModel>( x => { x.CallConstructor(() => new ExistingTrancheViewModel(summaryViewModel)); x.SetBehavior(Behavior.CallOriginal); }); var detailsViewModel = Mock.Create<FundingDetailsViewModel>( x => { x.CallConstructor(() => new FundingDetailsViewModel(summaryViewModel)); x.SetBehavior(Behavior.CallOriginal); }); var newTrancheViewModel = Mock.Create<NewTrancheViewModel>(x => { x.CallConstructor(() => new NewTrancheViewModel(summaryViewModel)); x.SetBehavior(Behavior.CallOriginal); }); var contracts = FakeDataFunding.FakeDataFundingDetail.FakeTrancheContracts(); // Create mock static class Mock.SetupStatic(typeof(SystemConstantFunctions), StaticConstructor.Mocked); Mock.SetupStatic(typeof(FinanceTypeFunctions), StaticConstructor.Mocked); Mock.SetupStatic(typeof(OperationsEntityFunctions), StaticConstructor.Mocked); Mock.SetupStatic(typeof(DirectDebitProfileFunctions), StaticConstructor.Mocked); Mock.SetupStatic(typeof(FundingFunctions), StaticConstructor.Mocked); // Fake data Mock.Arrange( () => SystemConstantFunctions.GetSystemConstantsByTypeAsync( SystemConstantType.TrancheStatus)) .Returns(FakeDataFunding.FakeDataFundingDetail.FakeSystemConstants()); Mock.Arrange(() => FinanceTypeFunctions.GetAllFinanceTypesAsync()) .Returns(FakeDataFunding.FakeDataFundingDetail.FakeRawFinanceTypes()); Mock.Arrange( () => SystemConstantFunctions.GetSystemConstantsByTypeAsync( SystemConstantType.Frequency)) .Returns(FakeDataFunding.FakeDataFundingDetail.FakeSystemConstants()); Mock.Arrange( () => SystemConstantFunctions.GetSystemConstantsByTypeAsync( SystemConstantType.InstallmentType)) .Returns(FakeDataFunding.FakeDataFundingDetail.FakeSystemConstants()); Mock.Arrange( () => SystemConstantFunctions.GetSystemConstantsByTypeAsync( SystemConstantType.FundingStatus)) .Returns(FakeDataFunding.FakeDataFundingDetail.FakeSystemConstants()); Mock.Arrange( () => OperationsEntityFunctions.GetEntitiesByCategoryIdAsync( EntityCategory.InternalCompany)) .Returns(FakeDataFunding.FakeDataFundingDetail.FakeRawInternalCompanies()); Mock.Arrange( () => OperationsEntityFunctions.GetEntitiesByCategoryIdAsync( EntityCategory.Supplier)) .Returns(FakeDataFunding.FakeDataFundingDetail.FakeRawSuppliers()); Mock.Arrange( () => OperationsEntityFunctions.GetEntitiesByCategoryIdAsync( EntityCategory.Funder)) .Returns(FakeDataFunding.FakeDataFundingDetail.FakeRawFunders()); Mock.Arrange(() => DirectDebitProfileFunctions.GetAllDirectDebitProfilesAsync()) .Returns(FakeDataFunding.FakeDataFundingDetail.FakeDirectDebitProfiles()); Mock.Arrange(() => FundingFunctions.CalculateFundingTrancheAsync(detailsViewModel.SelectedTrancheProfile)).IgnoreArguments() .Returns(Task.Run(() => { })); Mock.Arrange(() => newTrancheViewModel.IncludedInTrancheContracts) .Returns(new ObservableModelCollection<TrancheContractSummary>(contracts)); Mock.Arrange(() => detailsViewModel.OriginalTrancheStatus).Returns(TrancheStatus.Confirmed); Mock.Arrange(() => newTrancheViewModel.SelectedTrancheProfile).Returns(FakeDataFunding.FakeDataFundingDetail.FakeTrancheProfile()); Mock.NonPublic.Arrange<Task>(newTrancheViewModel, "SaveAsync").Returns(Task.Run(() => { })); // Fake data for private property var priva = new PrivateAccessor(summaryViewModel); priva.SetProperty("ExistingTrancheViewModel", existingTranche); summaryViewModel.AddedTrancheId = new int(); // Fake data summaryViewModel.AddedTrancheId = 1; Mock.Arrange(() => summaryViewModel.FundingDetails) .Returns(new FundingDetailsViewModel(summaryViewModel)); Mock.Arrange(() => existingTranche.SetTrancheIdAsync(Arg.IsAny<int>())).Returns(Task.Run(() => { })); Mock.Arrange(() => FundingFunctions.GetAllTranchesAsync()) .Returns(FakeDataFunding.FakeDataFundingSummary.FakeFundingSummaryList()); // Run method await newTrancheViewModel.OnStepAsync(FundingDetailsViewModel.EnumStep.Save); // Expect summaryViewModel.AddedTrancheId = newTrancheViewModel.SelectedTrancheProfile.TrancheId Assert.AreEqual(summaryViewModel.AddedTrancheId, newTrancheViewModel.SelectedTrancheProfile.TrancheId); }); }