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); }
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)); }
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); }
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()); }