public void TestAtExecuteKalderExceptionHandlerViewModelMedIntranetGuiRepositoryExceptionVedIntranetGuiRepositoryException()
        {
            var fixture = new Fixture();

            fixture.Customize <IRegnskabslisteViewModel>(e => e.FromFactory(() => MockRepository.GenerateMock <IRegnskabslisteViewModel>()));

            Func <IEnumerable <IRegnskabModel> > regnskabCollectionGetter = () =>
            {
                throw new IntranetGuiRepositoryException(fixture.Create <string>());
            };
            var finansstyringRepositoryMock = MockRepository.GenerateMock <IFinansstyringRepository>();

            finansstyringRepositoryMock.Expect(m => m.RegnskabslisteGetAsync())
            .Return(Task.Run(regnskabCollectionGetter))
            .Repeat.Any();

            var exceptionHandlerViewModelMock = MockRepository.GenerateMock <IExceptionHandlerViewModel>();

            var command = new RegnskabslisteRefreshCommand(finansstyringRepositoryMock, exceptionHandlerViewModelMock);

            Assert.That(command, Is.Not.Null);
            Assert.That(command.ExecuteTask, Is.Null);

            Action action = () =>
            {
                command.Execute(fixture.Create <IRegnskabslisteViewModel>());
                Assert.That(command.ExecuteTask, Is.Not.Null);
                command.ExecuteTask.Wait();
            };

            Task.Run(action).Wait(3000);

            finansstyringRepositoryMock.AssertWasCalled(m => m.RegnskabslisteGetAsync());
            exceptionHandlerViewModelMock.AssertWasCalled(m => m.HandleException(Arg <IntranetGuiRepositoryException> .Is.TypeOf));
        }
        public void TestAtExecuteAdderNyeRegnskaberTilRegnskabslisteViewModel()
        {
            var fixture = new Fixture();

            fixture.Customize <DateTime>(e => e.FromFactory(() => DateTime.Now));
            fixture.Customize <IRegnskabModel>(e => e.FromFactory(() =>
            {
                var regnskabModelMock = MockRepository.GenerateMock <IRegnskabModel>();
                regnskabModelMock.Expect(m => m.Nummer)
                .Return(fixture.Create <int>())
                .Repeat.Any();
                return(regnskabModelMock);
            }));

            var regnskabCollection = fixture.CreateMany <IRegnskabModel>(25).ToList();
            Func <IEnumerable <IRegnskabModel> > regnskabCollectionGetter = () => regnskabCollection;
            var finansstyringRepositoryMock = MockRepository.GenerateMock <IFinansstyringRepository>();

            finansstyringRepositoryMock.Expect(m => m.RegnskabslisteGetAsync())
            .Return(Task.Run(regnskabCollectionGetter))
            .Repeat.Any();

            var exceptionHandlerViewModelMock = MockRepository.GenerateMock <IExceptionHandlerViewModel>();

            var regnskabslisteViewModelMock = MockRepository.GenerateMock <IRegnskabslisteViewModel>();

            regnskabslisteViewModelMock.Expect(m => m.StatusDato)
            .Return(fixture.Create <DateTime>())
            .Repeat.Any();
            regnskabslisteViewModelMock.Expect(m => m.Regnskaber)
            .Return(new ObservableCollection <IRegnskabViewModel>(new List <IRegnskabViewModel>()))
            .Repeat.Any();

            var command = new RegnskabslisteRefreshCommand(finansstyringRepositoryMock, exceptionHandlerViewModelMock);

            Assert.That(command, Is.Not.Null);
            Assert.That(command.ExecuteTask, Is.Null);

            Action action = () =>
            {
                command.Execute(regnskabslisteViewModelMock);
                Assert.That(command.ExecuteTask, Is.Not.Null);
                command.ExecuteTask.Wait();
            };

            Task.Run(action).Wait(3000);

            finansstyringRepositoryMock.AssertWasCalled(m => m.RegnskabslisteGetAsync());
            regnskabslisteViewModelMock.AssertWasCalled(m => m.StatusDato = Arg <DateTime> .Is.LessThanOrEqual(DateTime.Now));
            regnskabslisteViewModelMock.AssertWasCalled(m => m.StatusDato, opt => opt.Repeat.Times(regnskabCollection.Count));
            regnskabslisteViewModelMock.AssertWasCalled(m => m.RegnskabAdd(Arg <IRegnskabViewModel> .Is.NotNull), opt => opt.Repeat.Times(regnskabCollection.Count));
            exceptionHandlerViewModelMock.AssertWasNotCalled(m => m.HandleException(Arg <Exception> .Is.Anything));
        }
        public void TestAtConstructorInitiererRegnskabslisteRefreshCommand()
        {
            var fixture = new Fixture();

            fixture.Customize <IFinansstyringRepository>(e => e.FromFactory(() => MockRepository.GenerateMock <IFinansstyringRepository>()));
            fixture.Customize <IExceptionHandlerViewModel>(e => e.FromFactory(() => MockRepository.GenerateMock <IExceptionHandlerViewModel>()));

            var command = new RegnskabslisteRefreshCommand(fixture.Create <IFinansstyringRepository>(), fixture.Create <IExceptionHandlerViewModel>());

            Assert.That(command, Is.Not.Null);
            Assert.That(command.ExecuteTask, Is.Null);
        }
        public void TestAtCanExecuteReturnererTrue()
        {
            var fixture = new Fixture();

            fixture.Customize <IFinansstyringRepository>(e => e.FromFactory(() => MockRepository.GenerateMock <IFinansstyringRepository>()));
            fixture.Customize <IExceptionHandlerViewModel>(e => e.FromFactory(() => MockRepository.GenerateMock <IExceptionHandlerViewModel>()));
            fixture.Customize <IRegnskabslisteViewModel>(e => e.FromFactory(() => MockRepository.GenerateMock <IRegnskabslisteViewModel>()));

            var command = new RegnskabslisteRefreshCommand(fixture.Create <IFinansstyringRepository>(), fixture.Create <IExceptionHandlerViewModel>());

            Assert.That(command, Is.Not.Null);

            var result = command.CanExecute(fixture.Create <IRegnskabslisteViewModel>());

            Assert.That(result, Is.True);
        }
        public void TestAtExecuteKalderOnFinishEfterRefreshFunktionalitet()
        {
            var fixture = new Fixture();

            fixture.Customize <DateTime>(e => e.FromFactory(() => DateTime.Now));

            Func <IEnumerable <IRegnskabModel> > regnskabCollectionGetter = () => new List <IRegnskabModel>(0);
            var finansstyringRepositoryMock = MockRepository.GenerateMock <IFinansstyringRepository>();

            finansstyringRepositoryMock.Expect(m => m.RegnskabslisteGetAsync())
            .Return(Task.Run(regnskabCollectionGetter))
            .Repeat.Any();

            var exceptionHandlerViewModelMock = MockRepository.GenerateMock <IExceptionHandlerViewModel>();

            var regnskabslisteViewModelMock = MockRepository.GenerateMock <IRegnskabslisteViewModel>();

            var actionCalled = false;
            Action <IRegnskabslisteViewModel> onFinish = obj =>
            {
                Assert.That(obj, Is.Not.Null);
                Assert.That(obj, Is.EqualTo(regnskabslisteViewModelMock));
                actionCalled = true;
            };

            var command = new RegnskabslisteRefreshCommand(finansstyringRepositoryMock, exceptionHandlerViewModelMock, onFinish);

            Assert.That(command, Is.Not.Null);
            Assert.That(command.ExecuteTask, Is.Null);

            Assert.That(actionCalled, Is.False);
            Action action = () =>
            {
                command.Execute(regnskabslisteViewModelMock);
                Assert.That(command.ExecuteTask, Is.Not.Null);
                command.ExecuteTask.Wait();
            };

            Task.Run(action).Wait(3000);
            Assert.That(actionCalled, Is.True);

            finansstyringRepositoryMock.AssertWasCalled(m => m.RegnskabslisteGetAsync());
            regnskabslisteViewModelMock.AssertWasCalled(m => m.StatusDato = Arg <DateTime> .Is.LessThanOrEqual(DateTime.Now));
            regnskabslisteViewModelMock.AssertWasNotCalled(m => m.Regnskaber);
            regnskabslisteViewModelMock.AssertWasNotCalled(m => m.RegnskabAdd(Arg <IRegnskabViewModel> .Is.Anything));
            exceptionHandlerViewModelMock.AssertWasNotCalled(m => m.HandleException(Arg <Exception> .Is.Anything));
        }
        public void TestExecuteRefreshCommandOnRegnskabViewModelsExecutesRefreshCommandOnRegnskabViewModels()
        {
            var fixture = new Fixture();

            fixture.Customize <ICommand>(e => e.FromFactory(() =>
            {
                var commandMock = MockRepository.GenerateMock <ICommand>();
                commandMock.Expect(m => m.CanExecute(Arg <object> .Is.NotNull))
                .Return(true)
                .Repeat.Any();
                return(commandMock);
            }));
            fixture.Customize <IRegnskabViewModel>(e => e.FromFactory(() =>
            {
                var regnskabViewModelMock = MockRepository.GenerateMock <IRegnskabViewModel>();
                regnskabViewModelMock.Expect(m => m.RefreshCommand)
                .Return(fixture.Create <ICommand>())
                .Repeat.Any();
                return(regnskabViewModelMock);
            }));

            var regnskabViewModelMockCollection = fixture.CreateMany <IRegnskabViewModel>(25).ToList();
            var regnskabslisteViewModelMock     = MockRepository.GenerateMock <IRegnskabslisteViewModel>();

            regnskabslisteViewModelMock.Expect(m => m.Regnskaber)
            .Return(regnskabViewModelMockCollection)
            .Repeat.Any();

            RegnskabslisteRefreshCommand.ExecuteRefreshCommandOnRegnskabViewModels(regnskabslisteViewModelMock);

            regnskabslisteViewModelMock.AssertWasCalled(m => m.Regnskaber);
            foreach (var regnskabViewModelMock in regnskabViewModelMockCollection)
            {
                var mock = regnskabViewModelMock;
                regnskabViewModelMock.AssertWasCalled(m => m.RefreshCommand);
                regnskabViewModelMock.RefreshCommand.AssertWasCalled(m => m.CanExecute(Arg <IRegnskabViewModel> .Is.Equal(mock)));
                regnskabViewModelMock.RefreshCommand.AssertWasCalled(m => m.Execute(Arg <IRegnskabViewModel> .Is.Equal(mock)));
            }
        }
 public void TestAtExecuteRefreshCommandOnRegnskabViewModelsKasterArgumentNullExceptionHvisRegnskabslisteViewModelErNull()
 {
     Assert.Throws <ArgumentNullException>(() => RegnskabslisteRefreshCommand.ExecuteRefreshCommandOnRegnskabViewModels(null));
 }
        public void TestAtExecuteOpdatererEksisteredeRegnskabIRegnskabslisteViewModel()
        {
            var fixture = new Fixture();

            fixture.Customize <DateTime>(e => e.FromFactory(() => DateTime.Now));
            fixture.Customize <IRegnskabModel>(e => e.FromFactory(() =>
            {
                var regnskabModelMock = MockRepository.GenerateMock <IRegnskabModel>();
                regnskabModelMock.Expect(m => m.Nummer)
                .Return(fixture.Create <int>())
                .Repeat.Any();
                return(regnskabModelMock);
            }));

            var regnskabCollection = fixture.CreateMany <IRegnskabModel>(1).ToList();
            Func <IEnumerable <IRegnskabModel> > regnskabCollectionGetter = () => regnskabCollection;
            var finansstyringRepositoryMock = MockRepository.GenerateMock <IFinansstyringRepository>();

            finansstyringRepositoryMock.Expect(m => m.RegnskabslisteGetAsync())
            .Return(Task.Run(regnskabCollectionGetter))
            .Repeat.Any();

            var exceptionHandlerViewModelMock = MockRepository.GenerateMock <IExceptionHandlerViewModel>();

            var regnskabViewModelMock = MockRepository.GenerateMock <IRegnskabViewModel>();

            regnskabViewModelMock.Expect(m => m.Nummer)
            .Return(regnskabCollection.ElementAt(0).Nummer)
            .Repeat.Any();

            var regnskabslisteViewModelMock = MockRepository.GenerateMock <IRegnskabslisteViewModel>();

            regnskabslisteViewModelMock.Expect(m => m.StatusDato)
            .Return(fixture.Create <DateTime>())
            .Repeat.Any();
            regnskabslisteViewModelMock.Expect(m => m.Regnskaber)
            .Return(new ObservableCollection <IRegnskabViewModel>(new List <IRegnskabViewModel> {
                regnskabViewModelMock
            }))
            .Repeat.Any();

            var command = new RegnskabslisteRefreshCommand(finansstyringRepositoryMock, exceptionHandlerViewModelMock);

            Assert.That(command, Is.Not.Null);
            Assert.That(command.ExecuteTask, Is.Null);

            Action action = () =>
            {
                command.Execute(regnskabslisteViewModelMock);
                Assert.That(command.ExecuteTask, Is.Not.Null);
                command.ExecuteTask.Wait();
            };

            Task.Run(action).Wait(3000);

            finansstyringRepositoryMock.AssertWasCalled(m => m.RegnskabslisteGetAsync());
            regnskabslisteViewModelMock.AssertWasCalled(m => m.StatusDato = Arg <DateTime> .Is.LessThanOrEqual(DateTime.Now));
            regnskabslisteViewModelMock.AssertWasCalled(m => m.StatusDato);
            regnskabViewModelMock.AssertWasCalled(m => m.Navn = Arg <string> .Is.Equal(regnskabCollection.ElementAt(0).Navn));
            // ReSharper disable ImplicitlyCapturedClosure
            regnskabViewModelMock.AssertWasCalled(m => m.StatusDato = Arg <DateTime> .Is.Equal(regnskabslisteViewModelMock.StatusDato));
            // ReSharper restore ImplicitlyCapturedClosure
            regnskabslisteViewModelMock.AssertWasNotCalled(m => m.RegnskabAdd(Arg <IRegnskabViewModel> .Is.Anything));
            exceptionHandlerViewModelMock.AssertWasNotCalled(m => m.HandleException(Arg <Exception> .Is.Anything));
        }