public void Return_a_failed_result_when_using_a_value_less_than_or_equal_to_0_or_higher_than_or_equal_to_1(string stringValue) { decimal value = decimal.Parse(stringValue); var result = VatRate.Create(value); Assert.IsTrue(result.IsFailure); Assert.IsNull(result.Value); }
public void Return_a_succesful_result_when_using_a_value_between_0_and_1(string stringValue) { decimal value = decimal.Parse(stringValue); var result = VatRate.Create(value); Assert.IsTrue(result.Success); Assert.AreEqual(value, result.Value.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 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 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)); } }