コード例 #1
0
        public async Task Handle_GivenDateWasNotFound_ReturnsEmptyCollection()
        {
            var request = new GetExchangeRates("2018-01-01");

            var result = await _handler.Handle(request, default);

            result.Should().BeEmpty();
        }
コード例 #2
0
        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"));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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));
        }