public async Task UpdateAmount(int id, decimal amount) { Statement dbStatement = await statementRepository.Get(id); dbStatement.UpdateAmount(MoneyAmount.Create(amount)); await statementRepository.Save(dbStatement); }
public void Return_a_failed_result_when_using_a_value_less_than_or_equal_to_0(string stringValue) { decimal value = decimal.Parse(stringValue); var result = MoneyAmount.Create(value); Assert.IsTrue(result.IsFailure); Assert.IsNull(result.Value); }
public void Return_a_succesful_result_when_using_a_value_higher_than_0(string stringValue) { decimal value = decimal.Parse(stringValue); var result = MoneyAmount.Create(value); Assert.IsTrue(result.Success); Assert.AreEqual(value, result.Value.Value); }
private BankStatement BuildBankStatement(decimal balance, DateTime date) { var bankStatement = new BankStatement(); bankStatement.SetProperty("Amount", MoneyAmount.Create(balance)); bankStatement.SetProperty("ExecutionDate", date); return(bankStatement); }
public void Create_a_succesful_result_given_valid_VatRate_and_VatAmount() { VatRate vatRate = VatRate.Create(0.10m).Value; MoneyAmount vatAmount = MoneyAmount.Create(1).Value; var result = PurchaseInfo.CreateWithVatAmount(vatRate, vatAmount); Assert.AreEqual(vatRate.Value, result.VatRate.Value); Assert.AreEqual(vatAmount.Value, result.VatAmount.Value); Assert.AreEqual(11.0m, result.GrossAmount.Value); Assert.AreEqual(10.0m, result.NetAmount.Value); }
public void Create_a_purchase_info_given_valid_VatRate_and_GrossAmount() { VatRate vatRate = VatRate.Create(0.10m).Value; MoneyAmount grossAmount = MoneyAmount.Create(1.10m).Value; var result = PurchaseInfo.CreateWithGrossAmount(vatRate, grossAmount); Assert.AreEqual(vatRate.Value, result.VatRate.Value); Assert.AreEqual(grossAmount.Value, result.GrossAmount.Value); Assert.AreEqual(1.0m, result.NetAmount.Value); Assert.AreEqual(0.10m, result.VatAmount.Value); }
public string RefillBalance(int customerId, decimal moneyAmount) { var moneyToCharge = MoneyAmount.Create(moneyAmount); var customer = customerRepositoryAfterAfter.GetById(customerId).ToResult("Customer can't be found"); return(Result.Combine(moneyToCharge, customer) .OnSuccess(() => customer.Value !.AddBalance(moneyToCharge.Value)) .OnSuccess(() => paymentServiceAfter.ChargePayment(customer.Value !.BillingInfo, moneyToCharge.Value)) .OnSuccess( () => customerRepositoryAfterAfter.Save(customer.Value !) .OnFailure(() => paymentServiceAfter.RollbackLastTransaction())) .OnBoth(result => Log(result)) .OnBoth(result => result.IsSuccess ? "OK" : result.Error)); }
public void CreateBankStatement_BankShouldHaveId() { // Arrange MoneyAmount amount = MoneyAmount.Create(12.50m); DateTime date = DateTime.Parse("2018-04-28 18:35:27"); Bank bank = new Bank(); // Act Action createStatement = () => bank.NewBankStatement(amount, date); // Assert Assert.Throws <ArgumentException>(createStatement); }
public void Create_CreditCardStatement_BillShoudHaveId() { // Arrange string description = "test description"; decimal amount = 100m; DateTime date = DateTime.Parse("2018-05-02"); CreditCardBill billWithoutId = new CreditCardBill(); // Act Action createStatement = () => CreditCardStatement.Create( billWithoutId, StatementDescription.Create(description), MoneyAmount.Create(amount), date); // Assert Assert.Throws <ArgumentException>(createStatement); }
public void Create_CreditCardStatement_BillShoudNotBeNull() { // Arrange string description = "test description"; decimal amount = 100m; DateTime date = DateTime.Parse("2018-05-02"); CreditCardBill nullBill = null; // Act Action createStatement = () => CreditCardStatement.Create( nullBill, StatementDescription.Create(description), MoneyAmount.Create(amount), date); // Assert Assert.Throws <ArgumentNullException>(createStatement); }
public void CreateBankStatement() { // Arrange int bankId = 10; MoneyAmount amount = MoneyAmount.Create(12.50m); DateTime date = DateTime.Parse("2018-04-28 18:35:27"); Bank bank = new Bank(); bank.SetId(bankId); // Act BankStatement statement = bank.NewBankStatement(amount, date); // Assert Assert.Equal(bankId, statement.Bank.Id); Assert.Equal(date, statement.ExecutionDate); Assert.Equal(amount, statement.Amount); }
public Result <PurchaseInfoDto> Handle(GetPurchaseInfoQuery query) { List <string> errors = new List <string>(); var vatRateResult = VatRate.Create(query.VatRate); if (vatRateResult.IsFailure) { errors.AddRange(vatRateResult.Errors); } var amountResult = MoneyAmount.Create(query.Amount); if (amountResult.IsFailure) { errors.AddRange(amountResult.Errors); return(Result <PurchaseInfoDto> .ResultFail(errors)); } if (errors.Any()) { return(Result <PurchaseInfoDto> .ResultFail(errors)); } if (query.AmountType == AmountType.Gross) { return(MapPurchaseInfoToDto(PurchaseInfo.CreateWithGrossAmount(vatRateResult.Value, amountResult.Value))); } else if (query.AmountType == AmountType.Net) { return(MapPurchaseInfoToDto(PurchaseInfo.CreateWithNetAmount(vatRateResult.Value, amountResult.Value))); } else if (query.AmountType == AmountType.Vat) { return(MapPurchaseInfoToDto(PurchaseInfo.CreateWithVatAmount(vatRateResult.Value, amountResult.Value))); } else { throw new ArgumentException(nameof(AmountType)); } }
public void Create_CreditCardStatement() { // Arrange string description = "test description"; decimal amount = 100m; DateTime date = DateTime.Parse("2018-05-02"); int id = 10; CreditCardBill bill = new CreditCardBill(); bill.SetId(id); // Act CreditCardStatement statement = CreditCardStatement.Create( bill, StatementDescription.Create(description), MoneyAmount.Create(amount), date); // Assert Assert.Equal(id, statement.Bill.Id); Assert.Equal(description, statement.Description.Value); Assert.Equal(amount, statement.Amount.Value); Assert.Equal(date, statement.BuyDate); }
public void CreateOutcome() { // Arrange var amount = MoneyAmount.Create(10m); var description = StatementDescription.Create("test"); var date = DateTime.Parse("2018-04-14"); var category = Category.Create("category"); category.SetId(1); // Act var statement = Statement.CreateOutcome(description, amount, date, category); // Assert Assert.Equal(0, statement.Id); Assert.Equal(amount, statement.Amount); Assert.Equal(description, statement.Description); Assert.Equal(category, statement.Category); Assert.Equal(date, statement.DueDate); Assert.Null(statement.PaymentDate); Assert.False(statement.Paid); Assert.Equal(StatementDirection.Outcome, statement.Direction); }
public void MarkAsPaidShouldSavePaymentDate() { // Arrange var date = DateTime.Parse("2018-04-14"); var category = Category.Create("category"); category.SetId(1); var statement = Statement.CreateOutcome(StatementDescription.Create("test"), MoneyAmount.Create(10m), date, category); // Act statement.MarkAsPaid(date); // Assert Assert.Equal(date, statement.PaymentDate); Assert.True(statement.Paid); }
public void ShouldNotCreateStatementWithCategoryWithoutId() { // Arrange var date = DateTime.Parse("2018-04-14"); var category = Category.Create("category"); // Act Action create = () => Statement.CreateOutcome(StatementDescription.Create("test"), MoneyAmount.Create(10m), date, category); //Assert Assert.Throws <ArgumentException>(create); }
private Statement CreateIncome(decimal amount) { var date = DateTime.Parse("2018-04-14"); var category = Category.Create("income-category"); category.SetId(1); var statement = Statement.CreateOutcome(StatementDescription.Create("Income"), MoneyAmount.Create(amount), date, category); statement.SetProperty("Direction", StatementDirection.Income); return(statement); }
private Statement CreatePaidOutcome(decimal amount) { var date = DateTime.Parse("2018-04-16"); var category = Category.Create(IncomePaidCategoryName); category.SetId(1); var statement = Statement.CreateOutcome(StatementDescription.Create("Income"), MoneyAmount.Create(amount), date, category); statement.MarkAsPaid(date); return(statement); }