public async Task WhenManagerReturnsCurrentRates_ThenResponseIsUsedToBuildDto() { var currentRates = new ExchangeRatesResponse("EUR", DateTime.Now, new Dictionary <string, decimal>()); var manager = new Mock <IExchangeRatesManager>(); manager.Setup(m => m.GetLatestRates()).ReturnsAsync(currentRates); ExchangeRatesResponse buildDtoInput = null; var dtoFactory = new Mock <IExchangeRatesDtoFactory>(); dtoFactory.Setup(m => m.BuildDto(It.IsAny <ExchangeRatesResponse>())) .Callback <ExchangeRatesResponse>(input => buildDtoInput = input) .Returns(new ExchangeRatesResponseDto( "base", DateTime.UtcNow, new Dictionary <string, decimal>())); var controller = new ExchangeRatesController(manager.Object, dtoFactory.Object); await controller.Index(); buildDtoInput.Should().Be(currentRates); }
public ExchangeRatesControllerTest() { var loggerMock = new Mock <ILogger <ExchangeRatesController> >(); var exchangeRatesManagementMock = new Mock <IExchangeRatesManagement>(); _sut = new ExchangeRatesController(loggerMock.Object, exchangeRatesManagementMock.Object); }
public async Task GetHistoryRatesForGivenPeriodsAsync_WhenModelIsValid_ShouldReturnOk() { var sut = new ExchangeRatesController( new Logger <ExchangeRatesController>(new LoggerFactory()), new ExchangeRatesManagement(new HttpClient())); var result = await sut.GetHistoryRatesForGivenPeriodsAsync(new HistoryRatesRequest(new [] { new DateTime(2018, 1, 1), DateTime.Now }, "USD", "EUR")); Assert.IsType <OkObjectResult>(result); }
public void GetTest() { string from = "USD"; string to = "EUR"; var controller = new ExchangeRatesController(); var result = controller.Get(from, to); Assert.AreEqual(0.90, result); }
public async Task GetHistoryRatesForGivenPeriodsAsync_WhenDateIsInFuture_ShouldReturnBadRequest() { var loggerMock = new Mock <ILogger <ExchangeRatesController> >(); var exchangeRatesManagement = new ExchangeRatesManagement(new Mock <HttpClient>().Object); var sut = new ExchangeRatesController(loggerMock.Object, exchangeRatesManagement); var result = await sut.GetHistoryRatesForGivenPeriodsAsync(new HistoryRatesRequest(new [] { DateTime.Now.AddDays(1) }, "EUR", "EUR")); Assert.IsType <BadRequestObjectResult>(result); }
public async Task GetHistoryRatesForGivenPeriodsAsync_WhenTargetCurrencyIsInvalid_ShouldReturnBadRequest(string targetCurrency) { var loggerMock = new Mock <ILogger <ExchangeRatesController> >(); var exchangeRatesManagement = new ExchangeRatesManagement(new Mock <HttpClient>().Object); var sut = new ExchangeRatesController(loggerMock.Object, exchangeRatesManagement); var result = await sut.GetHistoryRatesForGivenPeriodsAsync(new HistoryRatesRequest(new [] { DateTime.Now }, "EUR", targetCurrency )); Assert.IsType <BadRequestObjectResult>(result); }
public async Task GetHistoryRatesForGivenPeriodsAsync_WhenBManagementThrowsException_ShouldReturnBadRequest() { var loggerMock = new Mock <ILogger <ExchangeRatesController> >(); var exchangeRatesManagementMock = new Mock <IExchangeRatesManagement>(); exchangeRatesManagementMock .Setup(x => x.GetRatesForGivenPeriodsAsync(It.IsAny <HistoryRatesRequest>())) .Throws <Exception>(); var sut = new ExchangeRatesController(loggerMock.Object, exchangeRatesManagementMock.Object); var result = await sut.GetHistoryRatesForGivenPeriodsAsync(It.IsAny <HistoryRatesRequest>()); Assert.IsType <BadRequestObjectResult>(result); }
public ExchangeRatesControllerTests() { var options = new DbContextOptionsBuilder <ExchangeRatesDbContext>() .UseInMemoryDatabase(databaseName: "ExchangeRates") .Options; using (var context = new ExchangeRatesDbContext(options)) { context.ExchangeRates.AddRange(ExchangeRateData); context.SaveChanges(); } _mockExchangeRatesService = new Mock <IExchangeRatesService>(); _controller = new ExchangeRatesController(new ExchangeRatesDbContext(options), _mockExchangeRatesService.Object); }
public static void SetUpClass() { controller = GetClient().ExchangeRates; applyConfiguration(); }
public ExchangeRatesControllerTests() { _mediatorMock = new Mock <IMediator>(); _controller = new ExchangeRatesController(_mediatorMock.Object); }