public async Task BuyCurrency_BRLARSEachTwiceChangingDate_ShouldSucceed() { //Arrange var mockedRepository = new MockedExchangeRepository(); var exchangeService = new ExchangeService(_loggerExchangeService.Object, mockedRepository); var BuyOrder = new BuyCurrencyOrder() { Amount = 7500, Currency = "BRL", UserId = "Mocked" }; var BuyOrder2 = new BuyCurrencyOrder() { Amount = 20000, Currency = "USD", UserId = "Mocked" }; //Act await exchangeService.BuyCurrency(BuyOrder); await exchangeService.BuyCurrency(BuyOrder2); //We set the transactions from the month before mockedRepository.TransactionsUser["Mocked"].ForEach(x => x.Date.AddDays(-31)); //And then we try as if in this month the value is 0 Func <Task> successfulBuy = async() => { await exchangeService.BuyCurrency(BuyOrder); }; Func <Task> successfulBuy2 = async() => { await exchangeService.BuyCurrency(BuyOrder2); }; //Assert decimal usdAmountForMocked = await mockedRepository.GetCurrentSpentAmountByUser("Mocked", "USD"); decimal brlAmountForMocked = await mockedRepository.GetCurrentSpentAmountByUser("Mocked", "BRL"); usdAmountForMocked.Should().Be(200m); brlAmountForMocked.Should().Be(300m); }
public async Task BuyCurrency_BRL_ShouldSucceedAndThenThrow() { //Arrange var mockedRepository = new MockedExchangeRepository(); var exchangeService = new ExchangeService(_loggerExchangeService.Object, mockedRepository); var BuyOrder = new BuyCurrencyOrder() { Amount = 7500, Currency = "BRL", UserId = "Mocked" }; var BuyOrder2 = new BuyCurrencyOrder() { Amount = 1.01m, Currency = "BRL", UserId = "Mocked" }; //Act Func <Task> successfulBuy = async() => { await exchangeService.BuyCurrency(BuyOrder); }; Func <Task> exception = async() => { await exchangeService.BuyCurrency(BuyOrder2); }; //Assert await successfulBuy.Should().NotThrowAsync(); await exception.Should().ThrowAsync <MonthlyLimitException>(); decimal brlAmountForMocked = await mockedRepository.GetCurrentSpentAmountByUser("Mocked", "BRL"); brlAmountForMocked.Should().Be(300m); }
public async Task BuyCurrency_BRLARS_ShouldSucceed() { //Arrange var mockedRepository = new MockedExchangeRepository(); var exchangeService = new ExchangeService(_loggerExchangeService.Object, mockedRepository); var BuyOrder = new BuyCurrencyOrder() { Amount = 7500, Currency = "BRL", UserId = "Mocked" }; var BuyOrder2 = new BuyCurrencyOrder() { Amount = 20000, Currency = "USD", UserId = "Mocked" }; //Act Func <Task> successfulBuy = async() => { await exchangeService.BuyCurrency(BuyOrder); }; Func <Task> successfulBuy2 = async() => { await exchangeService.BuyCurrency(BuyOrder2); }; //Assert await successfulBuy.Should().NotThrowAsync(); await successfulBuy2.Should().NotThrowAsync(); decimal usdAmountForMocked = await mockedRepository.GetCurrentSpentAmountByUser("Mocked", "USD"); decimal brlAmountForMocked = await mockedRepository.GetCurrentSpentAmountByUser("Mocked", "BRL"); usdAmountForMocked.Should().Be(200m); brlAmountForMocked.Should().Be(300m); }
public async Task GetExchangeRateByISOCodeAsync_ARS_ThrowInvalidCurrencyException() { //Arrange var mockedRepository = new MockedExchangeRepository(); var exchangeService = new ExchangeService(_loggerExchangeService.Object, mockedRepository); //Act Func <Task> invalidResult = async() => { await exchangeService.GetExchangeRateByISOCodeAsync("ARS"); }; //Assert await invalidResult.Should().ThrowAsync <InvalidCurrencyException>(); }
public async Task BuyCurrency_ARS_ThrowInvalidCurrencyException() { //Arrange var mockedRepository = new MockedExchangeRepository(); var exchangeService = new ExchangeService(_loggerExchangeService.Object, mockedRepository); var BuyOrder = new BuyCurrencyOrder() { Amount = 100, Currency = "ARS", UserId = "Mocked" }; //Act Func <Task> invalidResult = async() => { await exchangeService.BuyCurrency(BuyOrder); }; //Assert await invalidResult.Should().ThrowAsync <InvalidCurrencyException>(); }
public void Validation_InvalidISOAmountChars_CausesModelInvalid() { //Arrange var mockedRepository = new MockedExchangeRepository(); var exchangeService = new ExchangeService(_loggerExchangeService.Object, mockedRepository); var BuyOrder = new BuyCurrencyOrder() { Amount = 100, Currency = "USDD", UserId = "User" }; var validationContext = new ValidationContext(BuyOrder, null, null); var validationResults = new List <ValidationResult>(); ////Act Validator.TryValidateObject(BuyOrder, validationContext, validationResults, true); //Assert validationResults.Count.Should().Be(1); }
public async Task BuyCurrency_USD_ShouldSucceedAndThenThrow() { //Arrange var mockedRepository = new MockedExchangeRepository(); var exchangeService = new ExchangeService(_loggerExchangeService.Object, mockedRepository); var BuyOrder = new BuyCurrencyOrder() { Amount = 20000, Currency = "USD", UserId = "Mocked" }; var BuyOrder2 = new BuyCurrencyOrder() { Amount = 1.01m, Currency = "USD", UserId = "Mocked" }; //Act Func <Task> successfulBuy = async() => { await exchangeService.BuyCurrency(BuyOrder); }; Func <Task> exception = async() => { await exchangeService.BuyCurrency(BuyOrder2); }; //Assert await successfulBuy.Should().NotThrowAsync(); await exception.Should().ThrowAsync <MonthlyLimitException>(); }