public void TestAtConstructorInitiererKontogrupperGetCommand()
        {
            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 KontogrupperGetCommand(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 <IRegnskabViewModel>(e => e.FromFactory(() => MockRepository.GenerateMock <IRegnskabViewModel>()));
            fixture.Customize <IFinansstyringRepository>(e => e.FromFactory(() => MockRepository.GenerateMock <IFinansstyringRepository>()));
            fixture.Customize <IExceptionHandlerViewModel>(e => e.FromFactory(() => MockRepository.GenerateMock <IExceptionHandlerViewModel>()));

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

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

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

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

            fixture.Customize <IRegnskabViewModel>(e => e.FromFactory(() =>
            {
                var mock = MockRepository.GenerateMock <IRegnskabViewModel>();
                mock.Expect(m => m.Kontogrupper)
                .Return(new List <IKontogruppeViewModel>(0))
                .Repeat.Any();
                return(mock);
            }));

            var exception = fixture.Create <IntranetGuiRepositoryException>();
            Func <IEnumerable <IKontogruppeModel> > kontogruppelisteGetter = () =>
            {
                throw exception;
            };
            var finansstyringRepositoryMock = MockRepository.GenerateMock <IFinansstyringRepository>();

            finansstyringRepositoryMock.Expect(m => m.KontogruppelisteGetAsync())
            .Return(Task.Run(kontogruppelisteGetter))
            .Repeat.Any();

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

            var regnskabViewModelMock = fixture.Create <IRegnskabViewModel>();

            var command = new KontogrupperGetCommand(finansstyringRepositoryMock, exceptionHandlerViewModelMock);

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

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

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

            regnskabViewModelMock.AssertWasCalled(m => m.Kontogrupper);
            finansstyringRepositoryMock.AssertWasCalled(m => m.KontogruppelisteGetAsync());
            regnskabViewModelMock.AssertWasNotCalled(m => m.KontogruppeAdd(Arg <IKontogruppeViewModel> .Is.Anything));
            exceptionHandlerViewModelMock.AssertWasCalled(m => m.HandleException(Arg <IntranetGuiRepositoryException> .Is.Equal(exception)));
        }
        public void TestAtExecuteHenterKontogrupper()
        {
            var fixture = new Fixture();

            fixture.Customize <IKontogruppeModel>(e => e.FromFactory(() => MockRepository.GenerateMock <IKontogruppeModel>()));
            fixture.Customize <IRegnskabViewModel>(e => e.FromFactory(() =>
            {
                var mock = MockRepository.GenerateMock <IRegnskabViewModel>();
                mock.Expect(m => m.Kontogrupper)
                .Return(new List <IKontogruppeViewModel>(0))
                .Repeat.Any();
                return(mock);
            }));

            var kontogruppeModelMockCollection = fixture.CreateMany <IKontogruppeModel>(7).ToList();
            Func <IEnumerable <IKontogruppeModel> > kontogruppelisteGetter = () => kontogruppeModelMockCollection;
            var finansstyringRepositoryMock = MockRepository.GenerateMock <IFinansstyringRepository>();

            finansstyringRepositoryMock.Expect(m => m.KontogruppelisteGetAsync())
            .Return(Task.Run(kontogruppelisteGetter))
            .Repeat.Any();

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

            var regnskabViewModelMock = fixture.Create <IRegnskabViewModel>();

            var command = new KontogrupperGetCommand(finansstyringRepositoryMock, exceptionHandlerViewModelMock);

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

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

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

            regnskabViewModelMock.AssertWasCalled(m => m.Kontogrupper);
            finansstyringRepositoryMock.AssertWasCalled(m => m.KontogruppelisteGetAsync());
            regnskabViewModelMock.AssertWasCalled(m => m.KontogruppeAdd(Arg <IKontogruppeViewModel> .Is.NotNull), opt => opt.Repeat.Times(kontogruppeModelMockCollection.Count));
            exceptionHandlerViewModelMock.AssertWasNotCalled(m => m.HandleException(Arg <Exception> .Is.Anything));
        }
        public void TestAtExecuteReturnererHvisKontogrupperErHentet()
        {
            var fixture = new Fixture();

            fixture.Customize <IKontogruppeViewModel>(e => e.FromFactory(() => MockRepository.GenerateMock <IKontogruppeViewModel>()));
            fixture.Customize <IRegnskabViewModel>(e => e.FromFactory(() =>
            {
                var mock = MockRepository.GenerateMock <IRegnskabViewModel>();
                mock.Expect(m => m.Kontogrupper)
                .Return(fixture.CreateMany <IKontogruppeViewModel>(7).ToList())
                .Repeat.Any();
                return(mock);
            }));

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

            var regnskabViewModelMock = fixture.Create <IRegnskabViewModel>();

            var command = new KontogrupperGetCommand(finansstyringRepositoryMock, exceptionHandlerViewModelMock);

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

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

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

            regnskabViewModelMock.AssertWasCalled(m => m.Kontogrupper);
            finansstyringRepositoryMock.AssertWasNotCalled(m => m.KontogruppelisteGetAsync());
            exceptionHandlerViewModelMock.AssertWasNotCalled(m => m.HandleException(Arg <Exception> .Is.Anything));
        }