public void TestAtExecuteDontExecuteDependencyCommandHvisCanExecuteOnDepencendyCommandErFalse() { var fixture = new Fixture(); fixture.Customize <DateTime>(e => e.FromFactory(() => DateTime.Now)); var dependencyCommandMock = MockRepository.GenerateMock <ITaskableCommand>(); dependencyCommandMock.Expect(m => m.CanExecute(Arg <IRegnskabViewModel> .Is.TypeOf)) .Return(false) .Repeat.Any(); Func <IEnumerable <IBudgetkontoModel> > budgetkontoplanGetter = () => new List <IBudgetkontoModel>(0); var finansstyringRepositoryMock = MockRepository.GenerateMock <IFinansstyringRepository>(); finansstyringRepositoryMock.Expect(m => m.BudgetkontoplanGetAsync(Arg <int> .Is.GreaterThan(0), Arg <DateTime> .Is.GreaterThan(DateTime.MinValue))) .Return(Task.Run(budgetkontoplanGetter)) .Repeat.Any(); var exceptionHandlerMock = MockRepository.GenerateMock <IExceptionHandlerViewModel>(); var regnskabsnummer = fixture.Create <int>(); var statusDato = fixture.Create <DateTime>(); var regnskabViewModelMock = MockRepository.GenerateMock <IRegnskabViewModel>(); regnskabViewModelMock.Expect(m => m.Nummer) .Return(regnskabsnummer) .Repeat.Any(); regnskabViewModelMock.Expect(m => m.StatusDato) .Return(statusDato) .Repeat.Any(); regnskabViewModelMock.Expect(m => m.Budgetkonti) .Return(new List <IBudgetkontoViewModel>(0)) .Repeat.Any(); regnskabViewModelMock.Expect(m => m.Budgetkontogrupper) .Return(new List <IBudgetkontogruppeViewModel>(0)) .Repeat.Any(); var command = new BudgetkontoplanGetCommand(dependencyCommandMock, finansstyringRepositoryMock, exceptionHandlerMock); Assert.That(command, Is.Not.Null); Assert.That(command.ExecuteTask, Is.Null); var mock = regnskabViewModelMock; Action action = () => { command.Execute(mock); Assert.That(command.ExecuteTask, Is.Not.Null); command.ExecuteTask.Wait(); }; Task.Run(action).Wait(3000); dependencyCommandMock.AssertWasCalled(m => m.CanExecute(Arg <IRegnskabViewModel> .Is.Equal(regnskabViewModelMock))); dependencyCommandMock.AssertWasNotCalled(m => m.Execute(Arg <object> .Is.Anything)); dependencyCommandMock.AssertWasNotCalled(m => m.ExecuteTask); finansstyringRepositoryMock.AssertWasCalled(m => m.BudgetkontoplanGetAsync(Arg <int> .Is.Equal(regnskabsnummer), Arg <DateTime> .Is.Equal(statusDato))); exceptionHandlerMock.AssertWasNotCalled(m => m.HandleException(Arg <Exception> .Is.Anything)); }
public void TestAtExecuteExecutesRefreshCommandOnBudgetkontiSomIkkeErHentet() { var fixture = new Fixture(); fixture.Customize <DateTime>(e => e.FromFactory(() => DateTime.Now)); fixture.Customize <IBudgetkontogruppeViewModel>(e => e.FromFactory(() => { var budgetkontogruppeViewModelMock = MockRepository.GenerateMock <IBudgetkontogruppeViewModel>(); budgetkontogruppeViewModelMock.Expect(m => m.Nummer) .Return(fixture.Create <int>()) .Repeat.Any(); return(budgetkontogruppeViewModelMock); })); var dependencyCommandMock = MockRepository.GenerateMock <ITaskableCommand>(); dependencyCommandMock.Expect(m => m.CanExecute(Arg <IRegnskabViewModel> .Is.TypeOf)) .Return(false) .Repeat.Any(); var budgetkontogruppeViewModelMockCollection = fixture.CreateMany <IBudgetkontogruppeViewModel>(7).ToList(); var budgetkontoModelMockCollection = GetBudgetkontoModels(fixture, budgetkontogruppeViewModelMockCollection, new Random(DateTime.Now.Second), 1).ToArray(); Func <IEnumerable <IBudgetkontoModel> > budgetkontoplanGetter = () => budgetkontoModelMockCollection; var finansstyringRepositoryMock = MockRepository.GenerateMock <IFinansstyringRepository>(); finansstyringRepositoryMock.Expect(m => m.BudgetkontoplanGetAsync(Arg <int> .Is.GreaterThan(0), Arg <DateTime> .Is.GreaterThan(DateTime.MinValue))) .Return(Task.Run(budgetkontoplanGetter)) .Repeat.Any(); var exceptionHandlerMock = MockRepository.GenerateMock <IExceptionHandlerViewModel>(); var refreshCommandMock = MockRepository.GenerateMock <ICommand>(); refreshCommandMock.Expect(m => m.CanExecute(Arg <object> .Is.NotNull)) .Return(true) .Repeat.Any(); var budgetkontoViewModelMock = MockRepository.GenerateMock <IBudgetkontoViewModel>(); budgetkontoViewModelMock.Expect(m => m.Kontonummer) .Return(budgetkontoModelMockCollection.ElementAt(0).Kontonummer) .Repeat.Any(); var unreadedBudgetkontoViewModelMock = MockRepository.GenerateMock <IBudgetkontoViewModel>(); unreadedBudgetkontoViewModelMock.Expect(m => m.Kontonummer) .Return(fixture.Create <string>()) .Repeat.Any(); unreadedBudgetkontoViewModelMock.Expect(m => m.RefreshCommand) .Return(refreshCommandMock) .Repeat.Any(); var regnskabsnummer = fixture.Create <int>(); var statusDato = fixture.Create <DateTime>(); var regnskabViewModelMock = MockRepository.GenerateMock <IRegnskabViewModel>(); regnskabViewModelMock.Expect(m => m.Nummer) .Return(regnskabsnummer) .Repeat.Any(); regnskabViewModelMock.Expect(m => m.StatusDato) .Return(statusDato) .Repeat.Any(); regnskabViewModelMock.Expect(m => m.Budgetkonti) .Return(new List <IBudgetkontoViewModel> { budgetkontoViewModelMock, unreadedBudgetkontoViewModelMock }) .Repeat.Any(); regnskabViewModelMock.Expect(m => m.Budgetkontogrupper) .Return(budgetkontogruppeViewModelMockCollection) .Repeat.Any(); var command = new BudgetkontoplanGetCommand(dependencyCommandMock, finansstyringRepositoryMock, exceptionHandlerMock); Assert.That(command, Is.Not.Null); Assert.That(command.ExecuteTask, Is.Null); var mock = regnskabViewModelMock; Action action = () => { command.Execute(mock); Assert.That(command.ExecuteTask, Is.Not.Null); command.ExecuteTask.Wait(); }; Task.Run(action).Wait(3000); dependencyCommandMock.AssertWasCalled(m => m.CanExecute(Arg <IRegnskabViewModel> .Is.Equal(regnskabViewModelMock))); dependencyCommandMock.AssertWasNotCalled(m => m.Execute(Arg <object> .Is.Anything)); dependencyCommandMock.AssertWasNotCalled(m => m.ExecuteTask); finansstyringRepositoryMock.AssertWasCalled(m => m.BudgetkontoplanGetAsync(Arg <int> .Is.Equal(regnskabsnummer), Arg <DateTime> .Is.Equal(statusDato))); regnskabViewModelMock.AssertWasCalled(m => m.Budgetkontogrupper); regnskabViewModelMock.AssertWasCalled(m => m.Budgetkonti, opt => opt.Repeat.Times(budgetkontoModelMockCollection.Count() + 1)); regnskabViewModelMock.AssertWasNotCalled(m => m.BudgetkontoAdd(Arg <IBudgetkontoViewModel> .Is.Anything)); unreadedBudgetkontoViewModelMock.AssertWasCalled(m => m.RefreshCommand); refreshCommandMock.AssertWasCalled(m => m.CanExecute(Arg <object> .Is.Equal(unreadedBudgetkontoViewModelMock))); refreshCommandMock.AssertWasCalled(m => m.Execute(Arg <object> .Is.Equal(unreadedBudgetkontoViewModelMock))); exceptionHandlerMock.AssertWasNotCalled(m => m.HandleException(Arg <Exception> .Is.Anything)); }