public PostingJournalResult(IPostingLineCollection postingLineCollection, IPostingWarningCalculator postingWarningCalculator) : base(postingLineCollection) { NullGuard.NotNull(postingWarningCalculator, nameof(postingWarningCalculator)); _postingWarningCalculator = postingWarningCalculator; }
public async Task CalculateAsync_WhenCalled_ReturnsSamePostingJournalResultWherePostingWarningCollectionIsEqualToPostingWarningCollectionFromPostingWarningCalculator() { IPostingWarningCollection postingWarningCollection = _fixture.BuildPostingWarningCollectionMock().Object; IPostingWarningCalculator postingWarningCalculator = _fixture.BuildPostingWarningCalculatorMock(postingWarningCollection).Object; IPostingJournalResult sut = CreateSut(postingWarningCalculator: postingWarningCalculator); IPostingJournalResult result = await sut.CalculateAsync(DateTime.Now.AddDays(_random.Next(1, 365) * -1)); Assert.That(result.PostingWarningCollection, Is.SameAs(postingWarningCollection)); }
public ApplyPostingJournalCommandHandler(IValidator validator, IAccountingRepository accountingRepository, ICommonRepository commonRepository, IPostingWarningCalculator postingWarningCalculator) { NullGuard.NotNull(validator, nameof(validator)) .NotNull(accountingRepository, nameof(accountingRepository)) .NotNull(commonRepository, nameof(commonRepository)) .NotNull(postingWarningCalculator, nameof(postingWarningCalculator)); _validator = validator; _accountingRepository = accountingRepository; _commonRepository = commonRepository; _postingWarningCalculator = postingWarningCalculator; }
public async Task ApplyPostingJournalAsync_WhenCalled_ReturnsNonEmptyPostingJournalResult() { IAccountingRepository sut = CreateSut(); IPostingJournal postingJournal = await BuildPostingJournalAsync(sut); IPostingWarningCalculator postingWarningCalculator = await BuildPostingWarningCalculator(); IPostingJournalResult result = await sut.ApplyPostingJournalAsync(postingJournal, postingWarningCalculator); Assert.That(result, Is.Not.Null); Assert.That(result.PostingLineCollection, Is.Not.Null); Assert.That(result.PostingLineCollection, Is.Not.Empty); Assert.That(result.PostingLineCollection.Count(), Is.EqualTo(postingJournal.PostingLineCollection.Count())); Assert.That(result.PostingWarningCollection, Is.Not.Null); Assert.That(result.PostingWarningCollection, Is.Empty); }
public Task <IPostingJournalResult> ApplyPostingJournalAsync(IPostingJournal postingJournal, IPostingWarningCalculator postingWarningCalculator) { NullGuard.NotNull(postingJournal, nameof(postingJournal)) .NotNull(postingWarningCalculator, nameof(postingWarningCalculator)); return(ExecuteAsync(async() => { IPostingLineCollection postingLineCollection = new PostingLineCollection(); foreach (IGrouping <int, IPostingLine> group in postingJournal.PostingLineCollection.GroupBy(postingLine => postingLine.Accounting.Number)) { using PostingLineModelHandler postingLineModelHandler = new PostingLineModelHandler(DbContext, AccountingModelConverter.Create(), _eventPublisher, DateTime.MinValue, DateTime.Today, true, true, applyingPostingLines: true); AccountingIdentificationState accountingIdentificationState = new AccountingIdentificationState(group.Key); IPostingLine[] createdPostingLineCollection = (await postingLineModelHandler.CreateAsync(group.OrderBy(m => m.PostingDate).ThenBy(m => m.SortOrder), accountingIdentificationState, true)).ToArray(); IPostingLine[] updatedPostingLineCollection = (await postingLineModelHandler.UpdateAsync(createdPostingLineCollection.OrderBy(m => m.PostingDate.Date).ThenBy(m => m.SortOrder), accountingIdentificationState)).ToArray(); foreach (IPostingLine postingLine in updatedPostingLineCollection) { IPostingLine[] affectedPostingCollection = (await postingLineModelHandler.ReadAsync(m => m.AccountingIdentifier == accountingIdentificationState.AccountingIdentifier && (m.PostingDate == postingLine.PostingDate && m.PostingLineIdentifier > postingLine.SortOrder || m.PostingDate > postingLine.PostingDate), prepareReadState: accountingIdentificationState)).ToArray(); foreach (IPostingLine affectedPostingLine in affectedPostingCollection.Where(m => updatedPostingLineCollection.Contains(m) == false)) { await postingLineModelHandler.UpdateAsync(affectedPostingLine, accountingIdentificationState); } } postingLineCollection.Add(updatedPostingLineCollection); } return (IPostingJournalResult) new PostingJournalResult(postingLineCollection, postingWarningCalculator); }, MethodBase.GetCurrentMethod())); }
private IPostingJournalResult CreateSut(IPostingLineCollection postingLineCollection = null, IPostingWarningCalculator postingWarningCalculator = null) { return(new Domain.Accounting.PostingJournalResult(postingLineCollection ?? _fixture.BuildPostingLineCollectionMock(isEmpty: true).Object, postingWarningCalculator ?? _fixture.BuildPostingWarningCalculatorMock(isEmpty: true).Object)); }