public async Task Handle_GivenDateWasNotFound_ReturnsEmptyCollection() { var request = new GetExchangeRates("2018-01-01"); var result = await _handler.Handle(request, default); result.Should().BeEmpty(); }
public async Task Handle_GivenDateWasFound_ReturnsRates() { var request = new GetExchangeRates("2012-01-01"); var result = await _handler.Handle(request, default); result.Should().NotBeNullOrEmpty(); result.Should().OnlyContain(s => s.Date == DateTime.Parse("2012-01-01")); }
public async Task Get_GivenValidRequestParameters_ReturnsResponseAsync(GetExchangeRatesRequest request) { GetExchangeRates actualQuery = null; var expectedQuery = new GetExchangeRates(request.Date); var rateMock = new List <Application.ExchangeRates.ExchangeRate> { new Application.ExchangeRates.ExchangeRate { Quantity = 100, CurrencyCode = "USD", Rate = 1, Unit = "LTL per 1 currency unit" }, new Application.ExchangeRates.ExchangeRate { Quantity = 100, CurrencyCode = "RUR", Rate = 1, Unit = "LTL per 1000 currency unit" } }; var expectedResponse = new List <GetExchangeRatesResponse> { new GetExchangeRatesResponse { Quantity = 100, CurrencyCode = "USD", Rate = 1, Unit = "LTL per 1 currency unit" }, new GetExchangeRatesResponse { Quantity = 100, CurrencyCode = "RUR", Rate = 1, Unit = "LTL per 1000 currency unit" } }; _mediatorMock .Setup(s => s.Send(It.IsAny <GetExchangeRates>(), It.IsAny <CancellationToken>())) .Callback <IRequest <IEnumerable <Application.ExchangeRates.ExchangeRate> >, CancellationToken>((query, ct) => actualQuery = (GetExchangeRates)query) .ReturnsAsync(rateMock); var response = await _controller.GetAsync(request); var result = response.Result.Should().BeOfType <OkObjectResult>(); _mediatorMock.Verify(s => s.Send(It.IsAny <GetExchangeRates>(), It.IsAny <CancellationToken>()), Times.Once); actualQuery.Should().BeEquivalentTo(expectedQuery); }
public async Task <ActionResult <IEnumerable <GetExchangeRatesResponse> > > GetAsync([FromQuery] GetExchangeRatesRequest request) { _logger.Information("Fetching exchange rates"); var query = new GetExchangeRates(request.Date); var result = await _mediator.Send(query); var response = result.ToResponse(); return(Ok(response)); }