コード例 #1
0
        public async Task <IActionResult> Patch([FromBody] SaveAmountRecordRequest request)
        {
            var amountRecords             = request.AmountRecords.Select(x => AmountRecord.Load(x.Id, x.Description, x.Amount));
            SaveAmountRecordResult result = await _useCase.Execute <Income>(request.AccountId, request.Id, amountRecords);

            return(Ok(result));
        }
コード例 #2
0
        public async Task Should_Add_Amount_Record_To_Expenses()
        {
            Guid accountId = Guid.NewGuid();
            Guid expenseId = Guid.NewGuid();

            AmountRecord[] amountRecords = new AmountRecord[] {
                new AmountRecord(700),
                new AmountRecord(300)
            };
            Account account = AccountBuilder
                              .New
                              .WithId(accountId)
                              .WithExpenses(expenseId, 700, 600, 500)
                              .WithIncomes(5000m)
                              .Build();

            _accountReadOnlyRepository
            .Setup(x => x.Get(accountId))
            .ReturnsAsync(account);

            _accountWriteOnlyRepository
            .Setup(x => x.Update(account, It.IsAny <IFinanceStatement>()));


            var result = await _saveAmountRecordUseCase.Execute <Expense>(accountId, expenseId, amountRecords);

            decimal expectedTotal             = 1_000m;
            decimal expectedExpenseTotal      = 2_100m;
            double  expectedPercentage        = 47.62;
            double  expectedExpensePercentage = 42;


            Assert.Equal(expenseId, result.Id);
            Assert.Equal(expectedTotal, result.Total);
            Assert.Equal(expectedPercentage, Math.Round(result.Percentage * 100, 2));
            Assert.Equal(expectedExpenseTotal, result.Expense.Total);
            Assert.Equal(expectedExpensePercentage, Math.Round(result.Expense.Percentage * 100, 2));
            Assert.NotEmpty(result.AmountRecords);

            _accountReadOnlyRepository.Verify(x => x.Get(accountId), Times.Once);
            _accountWriteOnlyRepository.Verify(x => x.Update(account, It.IsAny <IFinanceStatement>()), Times.Once);
        }