public async Task RemovePostingLineFromPostingJournal_WhenPostingJournalKeyHasValueAndKeyValueEntryForPostingJournalWasReturnedFromQueryBus_ReturnsPartialViewResultWhereModelIsApplyPostingJournalViewModelWithSortedApplyPostingLines()
        {
            ApplyPostingLineCollectionViewModel postingLineCollection = BuildApplyPostingLineCollectionViewModel(
                BuildApplyPostingLineViewModel(),
                BuildApplyPostingLineViewModel(),
                BuildApplyPostingLineViewModel(),
                BuildApplyPostingLineViewModel(),
                BuildApplyPostingLineViewModel(),
                BuildApplyPostingLineViewModel());
            ApplyPostingJournalViewModel postingJournal   = BuildApplyPostingJournalViewModel(applyPostingLineCollectionViewModel: postingLineCollection);
            IKeyValueEntry keyValueEntryForPostingJournal = BuildKeyValueEntryForPostingJournal(postingJournal);
            Controller     sut = CreateSut(keyValueEntryForPostingJournal: keyValueEntryForPostingJournal);

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

            ApplyPostingJournalViewModel applyPostingJournalViewModel = (ApplyPostingJournalViewModel)result.Model;

            for (int i = 1; i < applyPostingJournalViewModel.ApplyPostingLines.Count; i++)
            {
                Assert.That(applyPostingJournalViewModel.ApplyPostingLines[i].PostingDate.UtcDateTime.Date, Is.LessThanOrEqualTo(applyPostingJournalViewModel.ApplyPostingLines[i - 1].PostingDate.UtcDateTime.Date));
                if (applyPostingJournalViewModel.ApplyPostingLines[i].PostingDate.UtcDateTime.Date != applyPostingJournalViewModel.ApplyPostingLines[i - 1].PostingDate.UtcDateTime.Date)
                {
                    continue;
                }

                Assert.That(applyPostingJournalViewModel.ApplyPostingLines[i].SortOrder ?? 0, Is.LessThanOrEqualTo(applyPostingJournalViewModel.ApplyPostingLines[i - 1].SortOrder ?? 0));
            }
        }
        private ApplyPostingLineCollectionViewModel BuildApplyPostingLineCollectionViewModel(params ApplyPostingLineViewModel[] applyPostingLineViewModelCollection)
        {
            NullGuard.NotNull(applyPostingLineViewModelCollection, nameof(applyPostingLineViewModelCollection));

            ApplyPostingLineCollectionViewModel applyPostingLineCollectionViewModel = new ApplyPostingLineCollectionViewModel();

            applyPostingLineCollectionViewModel.AddRange(applyPostingLineViewModelCollection);

            return(applyPostingLineCollectionViewModel);
        }
            public IEnumerable <IApplyPostingLineCommand> Convert(ApplyPostingLineCollectionViewModel applyPostingLineCollectionViewModel, ResolutionContext context)
            {
                NullGuard.NotNull(applyPostingLineCollectionViewModel, nameof(applyPostingLineCollectionViewModel))
                .NotNull(context, nameof(context));

                return(applyPostingLineCollectionViewModel
                       .OrderBy(applyPostingLineViewModel => applyPostingLineViewModel.PostingDate.LocalDateTime.Date)
                       .ThenBy(applyPostingLineViewModel => applyPostingLineViewModel.SortOrder ?? 0)
                       .Select(applyPostingLineViewModel => context.Mapper.Map <ApplyPostingLineViewModel, ApplyPostingLineCommand>(applyPostingLineViewModel))
                       .ToArray());
            }
        public async Task RemovePostingLineFromPostingJournal_WhenPostingJournalKeyHasValueAndPostingJournalFromKeyValueContainsOnePostingLinesMatchingPostingLineIdentifier_AssertPublishAsyncWasCalledOnCommandBusWithDeleteKeyValueEntryCommandForPostingJournal()
        {
            Guid postingLineIdentifier = Guid.NewGuid();
            ApplyPostingLineViewModel           applyPostingLineViewModel           = BuildApplyPostingLineViewModel(postingLineIdentifier);
            ApplyPostingLineCollectionViewModel applyPostingLineCollectionViewModel = BuildApplyPostingLineCollectionViewModel(applyPostingLineViewModel);
            ApplyPostingJournalViewModel        applyPostingJournalViewModel        = BuildApplyPostingJournalViewModel(applyPostingLineCollectionViewModel: applyPostingLineCollectionViewModel);
            IKeyValueEntry keyValueEntryForPostingJournal = BuildKeyValueEntryForPostingJournal(applyPostingJournalViewModel);
            Controller     sut = CreateSut(keyValueEntryForPostingJournal: keyValueEntryForPostingJournal);

            string postingJournalKey = _fixture.Create <string>();
            await sut.RemovePostingLineFromPostingJournal(_fixture.Create <int>(), postingJournalKey, postingLineIdentifier);

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <IDeleteKeyValueEntryCommand>(command => command != null && string.CompareOrdinal(command.Key, postingJournalKey) == 0)), Times.Once());
        }
        public async Task RemovePostingLineFromPostingJournal_WhenPostingJournalKeyHasValueAndPostingJournalFromKeyValueContainsOnePostingLinesMatchingPostingLineIdentifier_AssertQueryAsyncWasCalledTwiceOnQueryBusWithPullKeyValueEntryQueryForPostingJournalKey()
        {
            Guid postingLineIdentifier = Guid.NewGuid();
            ApplyPostingLineViewModel           applyPostingLineViewModel           = BuildApplyPostingLineViewModel(postingLineIdentifier);
            ApplyPostingLineCollectionViewModel applyPostingLineCollectionViewModel = BuildApplyPostingLineCollectionViewModel(applyPostingLineViewModel);
            ApplyPostingJournalViewModel        applyPostingJournalViewModel        = BuildApplyPostingJournalViewModel(applyPostingLineCollectionViewModel: applyPostingLineCollectionViewModel);
            IKeyValueEntry keyValueEntryForPostingJournal = BuildKeyValueEntryForPostingJournal(applyPostingJournalViewModel);
            Controller     sut = CreateSut(keyValueEntryForPostingJournal: keyValueEntryForPostingJournal);

            string postingJournalKey = _fixture.Create <string>();
            await sut.RemovePostingLineFromPostingJournal(_fixture.Create <int>(), postingJournalKey, postingLineIdentifier);

            _queryBusMock.Verify(m => m.QueryAsync <IPullKeyValueEntryQuery, IKeyValueEntry>(It.Is <IPullKeyValueEntryQuery>(query => query != null && string.CompareOrdinal(query.Key, postingJournalKey) == 0)), Times.Exactly(2));
        }
        public async Task RemovePostingLineFromPostingJournal_WhenPostingJournalKeyHasValueAndPostingJournalFromKeyValueEntryDoesNotContainPostingLineForPostingLineIdentifier_AssertPublishAsyncWasNotCalledOnCommandBusWithDeleteKeyValueEntryCommandForPostingJournal()
        {
            ApplyPostingLineViewModel           applyPostingLineViewModel1          = BuildApplyPostingLineViewModel();
            ApplyPostingLineViewModel           applyPostingLineViewModel2          = BuildApplyPostingLineViewModel();
            ApplyPostingLineViewModel           applyPostingLineViewModel3          = BuildApplyPostingLineViewModel();
            ApplyPostingLineCollectionViewModel applyPostingLineCollectionViewModel = BuildApplyPostingLineCollectionViewModel(applyPostingLineViewModel1, applyPostingLineViewModel2, applyPostingLineViewModel3);
            ApplyPostingJournalViewModel        applyPostingJournalViewModel        = BuildApplyPostingJournalViewModel(applyPostingLineCollectionViewModel: applyPostingLineCollectionViewModel);
            IKeyValueEntry keyValueEntryForPostingJournal = BuildKeyValueEntryForPostingJournal(applyPostingJournalViewModel);
            Controller     sut = CreateSut(keyValueEntryForPostingJournal: keyValueEntryForPostingJournal);

            await sut.RemovePostingLineFromPostingJournal(_fixture.Create <int>(), _fixture.Create <string>(), Guid.NewGuid());

            _commandBusMock.Verify(m => m.PublishAsync(It.IsAny <IDeleteKeyValueEntryCommand>()), Times.Never());
        }
        public async Task RemovePostingLineFromPostingJournal_WhenPostingJournalKeyHasValueAndPostingJournalFromKeyValueContainsOnePostingLinesMatchingPostingLineIdentifier_ReturnsPartialViewResultWhereModelIsApplyPostingJournalViewModelWithEmptyApplyPostingLines()
        {
            Guid postingLineIdentifier = Guid.NewGuid();
            ApplyPostingLineViewModel           postingLine           = BuildApplyPostingLineViewModel(postingLineIdentifier);
            ApplyPostingLineCollectionViewModel postingLineCollection = BuildApplyPostingLineCollectionViewModel(postingLine);
            ApplyPostingJournalViewModel        postingJournal        = BuildApplyPostingJournalViewModel(applyPostingLineCollectionViewModel: postingLineCollection);
            IKeyValueEntry keyValueEntryForPostingJournal             = BuildKeyValueEntryForPostingJournal(postingJournal);
            Controller     sut = CreateSut(keyValueEntryForPostingJournal: keyValueEntryForPostingJournal);

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

            ApplyPostingJournalViewModel applyPostingJournalViewModel = (ApplyPostingJournalViewModel)result.Model;

            Assert.That(applyPostingJournalViewModel.ApplyPostingLines, Is.Empty);
        }
Example #8
0
        public async Task AddPostingLineToPostingJournal_WhenPostingJournalKeyHasValueAndPostingLineIsValidAndKeyValueEntryForPostingJournalWasReturnedFromQueryBus_ReturnsPartialViewResultWhereModelIsApplyPostingJournalViewModelWithApplyPostingLinesContainingExistingItemsPlusOne()
        {
            ApplyPostingLineCollectionViewModel applyPostingLineCollectionViewModel = BuildApplyPostingLineCollectionViewModel(
                _fixture.Create <ApplyPostingLineViewModel>(),
                _fixture.Create <ApplyPostingLineViewModel>());
            ApplyPostingJournalViewModel savedApplyPostingJournalViewModel = BuildApplyPostingJournalViewModel(applyPostingLineCollectionViewModel: applyPostingLineCollectionViewModel);
            IKeyValueEntry keyValueEntryForPostingJournal = BuildKeyValueEntryForPostingJournal(savedApplyPostingJournalViewModel);
            Controller     sut = CreateSut(keyValueEntryForPostingJournal: keyValueEntryForPostingJournal);

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

            ApplyPostingJournalViewModel applyPostingJournalViewModel = (ApplyPostingJournalViewModel)result.Model;

            Assert.That(applyPostingJournalViewModel.ApplyPostingLines.Count, Is.EqualTo(3));
        }
Example #9
0
        public async Task AddPostingLineToPostingJournal_WhenPostingJournalKeyHasValueAndPostingLineIsValidAndKeyValueEntryForPostingJournalWasReturnedFromQueryBus_AssertPublishAsyncWasCalledOnCommandBusWithPushKeyValueEntryCommandForPostingJournal()
        {
            int accountingNumber = _fixture.Create <int>();
            ApplyPostingLineCollectionViewModel applyPostingLineCollectionViewModel = BuildApplyPostingLineCollectionViewModel(_fixture.Create <ApplyPostingLineViewModel>(), _fixture.Create <ApplyPostingLineViewModel>());
            ApplyPostingJournalViewModel        applyPostingJournalViewModel        = BuildApplyPostingJournalViewModel(accountingNumber, applyPostingLineCollectionViewModel);
            IKeyValueEntry keyValueEntryForPostingJournal = BuildKeyValueEntryForPostingJournal(applyPostingJournalViewModel);
            Controller     sut = CreateSut(keyValueEntryForPostingJournal: keyValueEntryForPostingJournal);

            string postingJournalKey     = _fixture.Create <string>();
            Guid   postingLineIdentifier = Guid.NewGuid();
            string postingLine           = BuildPostingLineJson(postingLineIdentifier);
            await sut.AddPostingLineToPostingJournal(_fixture.Create <int>(), postingJournalKey, postingLine);

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <IPushKeyValueEntryCommand>(command => command != null && string.CompareOrdinal(command.Key, postingJournalKey) == 0 && command.Value != null && command.Value.GetType() == typeof(ApplyPostingJournalViewModel) && ((ApplyPostingJournalViewModel)command.Value).AccountingNumber == accountingNumber && ((ApplyPostingJournalViewModel)command.Value).ApplyPostingLines != null && ((ApplyPostingJournalViewModel)command.Value).ApplyPostingLines.Count == 3 && ((ApplyPostingJournalViewModel)command.Value).ApplyPostingLines.Any(applyPostingLine => applyPostingLine.Identifier == postingLineIdentifier))), Times.Once);
        }
        public async Task RemovePostingLineFromPostingJournal_WhenPostingJournalKeyHasValueAndPostingJournalFromKeyValueEntryDoesNotContainPostingLineForPostingLineIdentifier_AssertPublishAsyncWasCalledOnCommandBusWithPushKeyValueEntryCommandForPostingJournal()
        {
            int accountingNumber = _fixture.Create <int>();
            ApplyPostingLineViewModel           applyPostingLineViewModel1          = BuildApplyPostingLineViewModel();
            ApplyPostingLineViewModel           applyPostingLineViewModel2          = BuildApplyPostingLineViewModel();
            ApplyPostingLineViewModel           applyPostingLineViewModel3          = BuildApplyPostingLineViewModel();
            ApplyPostingLineCollectionViewModel applyPostingLineCollectionViewModel = BuildApplyPostingLineCollectionViewModel(applyPostingLineViewModel1, applyPostingLineViewModel2, applyPostingLineViewModel3);
            ApplyPostingJournalViewModel        applyPostingJournalViewModel        = BuildApplyPostingJournalViewModel(accountingNumber, applyPostingLineCollectionViewModel);
            IKeyValueEntry keyValueEntryForPostingJournal = BuildKeyValueEntryForPostingJournal(applyPostingJournalViewModel);
            Controller     sut = CreateSut(keyValueEntryForPostingJournal: keyValueEntryForPostingJournal);

            string postingJournalKey = _fixture.Create <string>();
            await sut.RemovePostingLineFromPostingJournal(_fixture.Create <int>(), postingJournalKey, Guid.NewGuid());

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <IPushKeyValueEntryCommand>(command => command != null && string.CompareOrdinal(command.Key, postingJournalKey) == 0 && command.Value != null && command.Value.GetType() == typeof(ApplyPostingJournalViewModel) && ((ApplyPostingJournalViewModel)command.Value).AccountingNumber == accountingNumber && ((ApplyPostingJournalViewModel)command.Value).ApplyPostingLines != null && ((ApplyPostingJournalViewModel)command.Value).ApplyPostingLines.Count == 3 && ((ApplyPostingJournalViewModel)command.Value).ApplyPostingLines.Contains(applyPostingLineViewModel1) && ((ApplyPostingJournalViewModel)command.Value).ApplyPostingLines.Contains(applyPostingLineViewModel2) && ((ApplyPostingJournalViewModel)command.Value).ApplyPostingLines.Contains(applyPostingLineViewModel3))), Times.Once);
        }
Example #11
0
        public async Task AddPostingLineToPostingJournal_WhenPostingJournalKeyHasValueAndPostingLineIsValidAndKeyValueEntryForPostingJournalWasReturnedFromQueryBus_ReturnsPartialViewResultWhereModelIsApplyPostingJournalViewModelWithApplyPostingLinesContainingPostingLineFromArguments()
        {
            ApplyPostingLineCollectionViewModel applyPostingLineCollectionViewModel = BuildApplyPostingLineCollectionViewModel(
                _fixture.Create <ApplyPostingLineViewModel>(),
                _fixture.Create <ApplyPostingLineViewModel>());
            ApplyPostingJournalViewModel savedApplyPostingJournalViewModel = BuildApplyPostingJournalViewModel(applyPostingLineCollectionViewModel: applyPostingLineCollectionViewModel);
            IKeyValueEntry keyValueEntryForPostingJournal = BuildKeyValueEntryForPostingJournal(savedApplyPostingJournalViewModel);
            Controller     sut = CreateSut(keyValueEntryForPostingJournal: keyValueEntryForPostingJournal);

            Guid              postingLineIdentifier = Guid.NewGuid();
            string            postingLineJson       = BuildPostingLineJson(postingLineIdentifier);
            PartialViewResult result = (PartialViewResult)await sut.AddPostingLineToPostingJournal(_fixture.Create <int>(), _fixture.Create <string>(), postingLineJson);

            ApplyPostingJournalViewModel applyPostingJournalViewModel = (ApplyPostingJournalViewModel)result.Model;

            Assert.That(applyPostingJournalViewModel.ApplyPostingLines.SingleOrDefault(applyPostingLine => applyPostingLine.Identifier == postingLineIdentifier), Is.Not.Null);
        }
        public async Task RemovePostingLineFromPostingJournal_WhenPostingJournalKeyHasValueAndPostingJournalFromKeyValueEntryDoesNotContainPostingLineForPostingLineIdentifier_ReturnsPartialViewResultWhereModelIsApplyPostingJournalViewModelWithApplyPostingLinesFromReturnedPostingJournal()
        {
            ApplyPostingLineViewModel           postingLine1          = BuildApplyPostingLineViewModel();
            ApplyPostingLineViewModel           postingLine2          = BuildApplyPostingLineViewModel();
            ApplyPostingLineViewModel           postingLine3          = BuildApplyPostingLineViewModel();
            ApplyPostingLineCollectionViewModel postingLineCollection = BuildApplyPostingLineCollectionViewModel(postingLine1, postingLine2, postingLine3);
            ApplyPostingJournalViewModel        postingJournal        = BuildApplyPostingJournalViewModel(applyPostingLineCollectionViewModel: postingLineCollection);
            IKeyValueEntry keyValueEntryForPostingJournal             = BuildKeyValueEntryForPostingJournal(postingJournal);
            Controller     sut = CreateSut(keyValueEntryForPostingJournal: keyValueEntryForPostingJournal);

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

            ApplyPostingJournalViewModel applyPostingJournalViewModel = (ApplyPostingJournalViewModel)result.Model;

            Assert.That(applyPostingJournalViewModel.ApplyPostingLines, Is.Not.Empty);
            Assert.That(applyPostingJournalViewModel.ApplyPostingLines.Contains(postingLine1), Is.True);
            Assert.That(applyPostingJournalViewModel.ApplyPostingLines.Contains(postingLine2), Is.True);
            Assert.That(applyPostingJournalViewModel.ApplyPostingLines.Contains(postingLine3), Is.True);
        }
 private ApplyPostingJournalViewModel BuildApplyPostingJournalViewModel(int?accountingNumber = null, ApplyPostingLineCollectionViewModel applyPostingLineCollectionViewModel = null)
 {
     return(_fixture.Build <ApplyPostingJournalViewModel>()
            .With(m => m.AccountingNumber, accountingNumber ?? _fixture.Create <int>())
            .With(m => m.ApplyPostingLines, applyPostingLineCollectionViewModel ?? BuildApplyPostingLineCollectionViewModel(BuildApplyPostingLineViewModel(), BuildApplyPostingLineViewModel(), BuildApplyPostingLineViewModel()))
            .Create());
 }