Example #1
0
        public async Task CreateBudgetAccount_WhenCalledWithAccountingNumberForExistingAccounting_ReturnsPartialViewResultWhereModelIsBudgetAccountViewModelWithBudgetInfosContainingDataForNextYear()
        {
            Controller sut = CreateSut();

            PartialViewResult result = (PartialViewResult)await sut.CreateBudgetAccount(_fixture.Create <int>());

            BudgetAccountViewModel budgetAccountViewModel = (BudgetAccountViewModel)result.Model;

            short nextYear     = (short)(DateTime.Today.Year + 1);
            short currentMonth = (short)DateTime.Today.Month;

            if (currentMonth == 1)
            {
                Assert.That(budgetAccountViewModel.BudgetInfos.ContainsKey(nextYear), Is.False);

                return;
            }

            Assert.That(budgetAccountViewModel.BudgetInfos.ContainsKey(nextYear), Is.True);

            BudgetInfoCollectionViewModel budgetInfoCollectionViewModel = budgetAccountViewModel.BudgetInfos[nextYear];

            Assert.That(budgetInfoCollectionViewModel, Is.Not.Null);
            Assert.That(budgetInfoCollectionViewModel.Count, Is.EqualTo(currentMonth - 1));
            for (short month = 1; month < currentMonth; month++)
            {
                BudgetInfoViewModel budgetInfoViewModel = budgetInfoCollectionViewModel.Single(m => m.Year == nextYear && m.Month == month);
                Assert.That(budgetInfoViewModel.EditMode, Is.EqualTo(EditMode.Create));
                Assert.That(budgetInfoViewModel.Income, Is.EqualTo(0M));
                Assert.That(budgetInfoViewModel.Expenses, Is.EqualTo(0M));
                Assert.That(budgetInfoViewModel.Budget, Is.EqualTo(0M));
                Assert.That(budgetInfoViewModel.Posted, Is.EqualTo(0M));
                Assert.That(budgetInfoViewModel.Available, Is.EqualTo(0M));
            }
        }
Example #2
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValid_ReturnsRedirectToActionResultWhereRouteValuesIsNotNull()
        {
            Controller sut = CreateSut();

            BudgetAccountViewModel budgetAccountViewModel = CreateBudgetAccountViewModel();

            RedirectToActionResult result = (RedirectToActionResult)await sut.CreateBudgetAccount(budgetAccountViewModel);

            Assert.That(result.RouteValues, Is.Not.Null);
        }
        public async Task UpdateBudgetAccount_WhenCalledWithAccountingNumberAndAccountNumberForExistingBudgetAccount_ReturnsPartialViewResultWhereModelIsBudgetAccountViewModelWithBudgetAccountGroupsNotEqualToNull()
        {
            Controller sut = CreateSut();

            PartialViewResult result = (PartialViewResult)await sut.UpdateBudgetAccount(_fixture.Create <int>(), _fixture.Create <string>());

            BudgetAccountViewModel budgetAccountViewModel = (BudgetAccountViewModel)result.Model;

            Assert.That(budgetAccountViewModel.BudgetAccountGroups, Is.Not.Null);
        }
Example #4
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValid_ReturnsRedirectToActionResultWhereRouteValuesContainsAccountingNumber()
        {
            Controller sut = CreateSut();

            BudgetAccountViewModel budgetAccountViewModel = CreateBudgetAccountViewModel();

            RedirectToActionResult result = (RedirectToActionResult)await sut.CreateBudgetAccount(budgetAccountViewModel);

            Assert.That(result.RouteValues.ContainsKey("accountingNumber"), Is.True);
        }
Example #5
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValid_ReturnsRedirectToActionResult()
        {
            Controller sut = CreateSut();

            BudgetAccountViewModel budgetAccountViewModel = CreateBudgetAccountViewModel();

            IActionResult result = await sut.CreateBudgetAccount(budgetAccountViewModel);

            Assert.That(result, Is.TypeOf <RedirectToActionResult>());
        }
Example #6
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValid_ReturnsNotNull()
        {
            Controller sut = CreateSut();

            BudgetAccountViewModel budgetAccountViewModel = CreateBudgetAccountViewModel();

            IActionResult result = await sut.CreateBudgetAccount(budgetAccountViewModel);

            Assert.That(result, Is.Not.Null);
        }
Example #7
0
        public async Task CreateBudgetAccount_WhenCalledWithAccountingNumberForExistingAccounting_ReturnsPartialViewResultWhereModelIsBudgetAccountViewModelWithPostingLinesEqualToNull()
        {
            Controller sut = CreateSut();

            PartialViewResult result = (PartialViewResult)await sut.CreateBudgetAccount(_fixture.Create <int>());

            BudgetAccountViewModel budgetAccountViewModel = (BudgetAccountViewModel)result.Model;

            Assert.That(budgetAccountViewModel.PostingLines, Is.Null);
        }
Example #8
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValid_ReturnsRedirectToActionResultWhereActionNameIsEqualToAccountings()
        {
            Controller sut = CreateSut();

            BudgetAccountViewModel budgetAccountViewModel = CreateBudgetAccountViewModel();

            RedirectToActionResult result = (RedirectToActionResult)await sut.CreateBudgetAccount(budgetAccountViewModel);

            Assert.That(result.ActionName, Is.EqualTo("Accountings"));
        }
Example #9
0
        public async Task UpdateBudgetAccount_WhenBudgetAccountViewModelIsValidWithBudgetInfosOnlyContainingDataForLastYear_AssertPublishAsyncWasCalledOnCommandBusWithUpdateBudgetAccountCommandContainingEmptyBudgetInfoCollection()
        {
            Controller sut = CreateSut();

            BudgetInfoDictionaryViewModel budgetInfoDictionaryViewModel = CreateBudgetInfoDictionaryViewModel(CreateBudgetInfoViewModelCollectionForLastYear());
            BudgetAccountViewModel        budgetAccountViewModel        = CreateBudgetAccountViewModel(budgetInfoDictionaryViewModel: budgetInfoDictionaryViewModel);

            await sut.UpdateBudgetAccount(budgetAccountViewModel);

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <IUpdateBudgetAccountCommand>(command => command != null && command.BudgetInfoCollection.Any() == false)), Times.Once);
        }
Example #10
0
        public async Task UpdateBudgetAccount_WhenBudgetAccountViewModelIsValidWithDescription_AssertPublishAsyncWasCalledOnCommandBusWithUpdateBudgetAccountCommandContainingDescriptionFromBudgetAccountViewModel()
        {
            Controller sut = CreateSut();

            string description = _fixture.Create <string>();
            BudgetAccountViewModel budgetAccountViewModel = CreateBudgetAccountViewModel(description: description);

            await sut.UpdateBudgetAccount(budgetAccountViewModel);

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <IUpdateBudgetAccountCommand>(command => command != null && string.CompareOrdinal(command.Description, description) == 0)), Times.Once);
        }
Example #11
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValid_AssertPublishAsyncWasCalledOnCommandBusWithCreateBudgetAccountCommandContainingAccountNumberFromBudgetAccountViewModel()
        {
            Controller sut = CreateSut();

            string accountNumber = _fixture.Create <string>();
            BudgetAccountViewModel budgetAccountViewModel = CreateBudgetAccountViewModel(accountNumber: accountNumber);

            await sut.CreateBudgetAccount(budgetAccountViewModel);

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <ICreateBudgetAccountCommand>(command => command != null && string.CompareOrdinal(command.AccountNumber, accountNumber.ToUpper()) == 0)), Times.Once);
        }
        public async Task UpdateBudgetAccount_WhenCalledWithAccountingNumberAndAccountNumberForExistingBudgetAccount_ReturnsPartialViewResultWhereModelIsBudgetAccountViewModelWithBudgetAccountGroupsMatchingBudgetAccountGroupCollectionFromQueryBus()
        {
            IEnumerable <IBudgetAccountGroup> budgetAccountGroupCollection = _fixture.CreateMany <IBudgetAccountGroup>(_random.Next(5, 10)).ToArray();
            Controller sut = CreateSut(budgetAccountGroupCollection: budgetAccountGroupCollection);

            PartialViewResult result = (PartialViewResult)await sut.UpdateBudgetAccount(_fixture.Create <int>(), _fixture.Create <string>());

            BudgetAccountViewModel budgetAccountViewModel = (BudgetAccountViewModel)result.Model;

            Assert.That(budgetAccountGroupCollection.All(budgetAccountGroup => budgetAccountViewModel.BudgetAccountGroups.SingleOrDefault(m => m.Number == budgetAccountGroup.Number) != null), Is.True);
        }
Example #13
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValidWithBudgetInfosOnlyContainingDataForYearToDate_AssertPublishAsyncWasCalledOnCommandBusWithCreateBudgetAccountCommandContainingBudgetInfoCollectionWithBudgetInfoForCurrentMonth()
        {
            Controller sut = CreateSut();

            BudgetInfoDictionaryViewModel budgetInfoDictionaryViewModel = CreateBudgetInfoDictionaryViewModel(CreateBudgetInfoViewModelCollectionForYearToDate());
            BudgetAccountViewModel        budgetAccountViewModel        = CreateBudgetAccountViewModel(budgetInfoDictionaryViewModel: budgetInfoDictionaryViewModel);

            await sut.CreateBudgetAccount(budgetAccountViewModel);

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <ICreateBudgetAccountCommand>(command => command != null && command.BudgetInfoCollection.All(budgetInfo => budgetInfo.Year == (short)DateTime.Today.Year && budgetInfo.Month == (short)DateTime.Today.Month))), Times.Once);
        }
Example #14
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValidWithBudgetInfosOnlyContainingDataForYearToDate_AssertPublishAsyncWasCalledOnCommandBusWithCreateBudgetAccountCommandContainingBudgetInfoCollectionWithOneBudgetInfo()
        {
            Controller sut = CreateSut();

            BudgetInfoDictionaryViewModel budgetInfoDictionaryViewModel = CreateBudgetInfoDictionaryViewModel(CreateBudgetInfoViewModelCollectionForYearToDate());
            BudgetAccountViewModel        budgetAccountViewModel        = CreateBudgetAccountViewModel(budgetInfoDictionaryViewModel: budgetInfoDictionaryViewModel);

            await sut.CreateBudgetAccount(budgetAccountViewModel);

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <ICreateBudgetAccountCommand>(command => command != null && command.BudgetInfoCollection.Count() == 1)), Times.Once);
        }
Example #15
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValidWithNote_AssertPublishAsyncWasCalledOnCommandBusWithCreateBudgetAccountCommandContainingNoteFromBudgetAccountViewModel()
        {
            Controller sut = CreateSut();

            string note = _fixture.Create <string>();
            BudgetAccountViewModel budgetAccountViewModel = CreateBudgetAccountViewModel(note: note);

            await sut.CreateBudgetAccount(budgetAccountViewModel);

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <ICreateBudgetAccountCommand>(command => command != null && string.CompareOrdinal(command.Note, note) == 0)), Times.Once);
        }
Example #16
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValidWithoutNote_AssertPublishAsyncWasCalledOnCommandBusWithCreateBudgetAccountCommandWhereNoteIsEqualToNull()
        {
            Controller sut = CreateSut();

            BudgetAccountViewModel budgetAccountViewModel = CreateBudgetAccountViewModel(hasNote: false);

            await sut.CreateBudgetAccount(budgetAccountViewModel);

            // ReSharper disable MergeIntoPattern
            _commandBusMock.Verify(m => m.PublishAsync(It.Is <ICreateBudgetAccountCommand>(command => command != null && command.Note == null)), Times.Once);
            // ReSharper restore MergeIntoPattern
        }
Example #17
0
        public async Task UpdateBudgetAccount_WhenBudgetAccountViewModelIsValid_AssertPublishAsyncWasCalledOnCommandBusWithUpdateBudgetAccountCommandContainingBudgetAccountGroupNumberFromBudgetAccountViewModel()
        {
            Controller sut = CreateSut();

            int budgetAccountGroupNumber = _fixture.Create <int>();
            BudgetAccountGroupViewModel budgetAccountGroupViewModel = CreateBudgetAccountGroupViewModel(budgetAccountGroupNumber);
            BudgetAccountViewModel      budgetAccountViewModel      = CreateBudgetAccountViewModel(budgetAccountGroupViewModel: budgetAccountGroupViewModel);

            await sut.UpdateBudgetAccount(budgetAccountViewModel);

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <IUpdateBudgetAccountCommand>(command => command != null && command.BudgetAccountGroupNumber == budgetAccountGroupNumber)), Times.Once);
        }
        public async Task ResolveBudgetAccount_WhenBudgetAccountWasReturnedFromQueryBus_ReturnsOkObjectResultWhereValueIsBudgetAccountViewModelWithAccountNumberEqualToAccountNumberOnBudgetAccountFromQueryBus()
        {
            string         accountNumber = _fixture.Create <string>();
            IBudgetAccount budgetAccount = _fixture.BuildBudgetAccountMock(accountNumber: accountNumber).Object;
            Controller     sut           = CreateSut(budgetAccount: budgetAccount);

            OkObjectResult result = (OkObjectResult)await sut.ResolveBudgetAccount(_fixture.Create <int>(), _fixture.Create <string>(), DateTime.Today.AddDays(_random.Next(0, 7) * -1));

            BudgetAccountViewModel budgetAccountViewModel = (BudgetAccountViewModel)result.Value;

            Assert.That(budgetAccountViewModel.AccountNumber, Is.EqualTo(accountNumber));
        }
Example #19
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValidWithBudgetInfosOnlyContainingDataForNext11Months_AssertPublishAsyncWasCalledOnCommandBusWithCreateBudgetAccountCommandContainingBudgetInfoCollectionWithBudgetInfoForNext11Months()
        {
            Controller sut = CreateSut();

            BudgetInfoViewModel[]         budgetInfoViewModelCollection = CreateBudgetInfoViewModelCollectionForNext11Months().ToArray();
            BudgetInfoDictionaryViewModel budgetInfoDictionaryViewModel = CreateBudgetInfoDictionaryViewModel(budgetInfoViewModelCollection);
            BudgetAccountViewModel        budgetAccountViewModel        = CreateBudgetAccountViewModel(budgetInfoDictionaryViewModel: budgetInfoDictionaryViewModel);

            await sut.CreateBudgetAccount(budgetAccountViewModel);

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <ICreateBudgetAccountCommand>(command => command != null && command.BudgetInfoCollection.All(budgetInfo => budgetInfoViewModelCollection.SingleOrDefault(budgetInfoViewModel => budgetInfoViewModel.Year == budgetInfo.Year && budgetInfoViewModel.Month == budgetInfo.Month) != null))), Times.Once);
        }
Example #20
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValid_AssertPublishAsyncWasCalledOnCommandBusWithCreateBudgetAccountCommandContainingBudgetInfoCollectionNotEqualToNull()
        {
            Controller sut = CreateSut();

            BudgetAccountViewModel budgetAccountViewModel = CreateBudgetAccountViewModel();

            await sut.CreateBudgetAccount(budgetAccountViewModel);

            // ReSharper disable MergeIntoPattern
            _commandBusMock.Verify(m => m.PublishAsync(It.Is <ICreateBudgetAccountCommand>(command => command != null && command.BudgetInfoCollection != null)), Times.Once);
            // ReSharper restore MergeIntoPattern
        }
        public async Task UpdateBudgetAccount_WhenCalledWithAccountingNumberAndAccountNumberForExistingBudgetAccount_ReturnsPartialViewResultWhereModelIsBudgetAccountViewModelWithAccountNumberMatchingAccountNumberOnBudgetAccountFromQueryBus()
        {
            string         accountNumber = _fixture.Create <string>();
            IBudgetAccount budgetAccount = _fixture.BuildBudgetAccountMock(accountNumber: accountNumber).Object;
            Controller     sut           = CreateSut(budgetAccount: budgetAccount);

            PartialViewResult result = (PartialViewResult)await sut.UpdateBudgetAccount(_fixture.Create <int>(), _fixture.Create <string>());

            BudgetAccountViewModel budgetAccountViewModel = (BudgetAccountViewModel)result.Model;

            Assert.That(budgetAccountViewModel.AccountNumber, Is.EqualTo(accountNumber));
        }
Example #22
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValid_AssertPublishAsyncWasCalledOnCommandBusWithCreateBudgetAccountCommandContainingAccountingNumberFromBudgetAccountViewModel()
        {
            Controller sut = CreateSut();

            int accountingNumber = _fixture.Create <int>();
            AccountingIdentificationViewModel accountingIdentificationViewModel = CreateAccountingIdentificationViewModel(accountingNumber);
            BudgetAccountViewModel            budgetAccountViewModel            = CreateBudgetAccountViewModel(accountingIdentificationViewModel);

            await sut.CreateBudgetAccount(budgetAccountViewModel);

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <ICreateBudgetAccountCommand>(command => command != null && command.AccountingNumber == accountingNumber)), Times.Once);
        }
Example #23
0
        public async Task CreateBudgetAccount_WhenBudgetAccountViewModelIsValid_ReturnsRedirectToActionResultWhereRouteValuesContainsAccountingNumberWithAccountingNumberFromAccountViewModel()
        {
            Controller sut = CreateSut();

            int accountingNumber = _fixture.Create <int>();
            AccountingIdentificationViewModel accountingIdentificationViewModel = CreateAccountingIdentificationViewModel(accountingNumber);
            BudgetAccountViewModel            budgetAccountViewModel            = CreateBudgetAccountViewModel(accountingIdentificationViewModel);

            RedirectToActionResult result = (RedirectToActionResult)await sut.CreateBudgetAccount(budgetAccountViewModel);

            Assert.That(result.RouteValues["accountingNumber"], Is.EqualTo(accountingNumber));
        }
Example #24
0
        public async Task CreateBudgetAccount_WhenCalledWithAccountingNumberForExistingAccounting_ReturnsPartialViewResultWhereModelIsBudgetAccountViewModelWithAccountingMatchingAccountingFromQueryBus()
        {
            int         accountingNumber = _fixture.Create <int>();
            IAccounting accounting       = _fixture.BuildAccountingMock(accountingNumber).Object;
            Controller  sut = CreateSut(accounting: accounting);

            PartialViewResult result = (PartialViewResult)await sut.CreateBudgetAccount(_fixture.Create <int>());

            BudgetAccountViewModel budgetAccountViewModel = (BudgetAccountViewModel)result.Model;

            Assert.That(budgetAccountViewModel.Accounting.AccountingNumber, Is.EqualTo(accountingNumber));
        }
        public async Task UpdateBudgetAccount_WhenCalledWithAccountingNumberAndAccountNumberForExistingBudgetAccount_ReturnsPartialViewResultWhereModelIsBudgetAccountViewModelWithBudgetInfosContainingDataFromBudgetInfoCollectionOnBudgetAccountFromQueryBus()
        {
            IBudgetInfo[]         budgetInfos          = _fixture.BuildBudgetInfoCollectionMock().Object.ToArray();
            IBudgetInfoCollection budgetInfoCollection = _fixture.BuildBudgetInfoCollectionMock(budgetInfoCollection: budgetInfos).Object;
            IBudgetAccount        budgetAccount        = _fixture.BuildBudgetAccountMock(budgetInfoCollection: budgetInfoCollection).Object;
            Controller            sut = CreateSut(budgetAccount: budgetAccount);

            PartialViewResult result = (PartialViewResult)await sut.UpdateBudgetAccount(_fixture.Create <int>(), _fixture.Create <string>());

            BudgetAccountViewModel budgetAccountViewModel = (BudgetAccountViewModel)result.Model;

            foreach (IGrouping <short, IBudgetInfo> group in budgetInfos.GroupBy(budgetInfo => budgetInfo.Year))
            {
                Assert.That(budgetAccountViewModel.BudgetInfos.ContainsKey(group.Key), Is.True);

                BudgetInfoCollectionViewModel budgetInfoCollectionViewModel = budgetAccountViewModel.BudgetInfos[group.Key];
                Assert.That(budgetInfoCollectionViewModel, Is.Not.Null);
                Assert.That(budgetInfoCollectionViewModel.All(budgetInfoViewModel => group.SingleOrDefault(m => m.Month == budgetInfoViewModel.Month) != null), Is.True);
            }
        }