public async Task Get() { //Arrange var tradesMock = new TradesResponseBuilder().Build(); var dateConvert = new Utils().ConverterTimestampToDatetime(tradesMock.FirstOrDefault().Date); _tradesServiceMock.Setup(x => x.Get(It.IsAny <service.TradesGetRequest>())).ReturnsAsync(tradesMock); var request = new TradesGetRequest { Coins = CoinsEnum.BTC }; //Act var result = await _tradesController.Get(request); var okObjectResult = result as OkObjectResult; var resultObj = okObjectResult.Value as List <Trades>; //Assert Assert.Equal(200, okObjectResult.StatusCode); Assert.NotNull(resultObj); Assert.Equal(5, resultObj.Count); Assert.Equal(dateConvert, resultObj.FirstOrDefault().Date); Assert.Equal(tradesMock.FirstOrDefault().Price, resultObj.FirstOrDefault().Price); Assert.Equal(tradesMock.FirstOrDefault().Amount, resultObj.FirstOrDefault().Amount); Assert.Equal(tradesMock.FirstOrDefault().Tid, resultObj.FirstOrDefault().Tid); Assert.Equal(tradesMock.FirstOrDefault().Type, resultObj.FirstOrDefault().Type); }
public void BuildTradesUrl_with_From_and_To() { //Arrange var coin = CoinsEnum.BTC; var dateTimeFrom = new DateTime(2021, 03, 20, 17, 23, 24); var dateTimeTo = new DateTime(2021, 03, 22, 17, 23, 24); var timeStampFrom = new Utils().ConvertDateTimeToTimeStamp(dateTimeFrom); var timeStampTo = new Utils().ConvertDateTimeToTimeStamp(dateTimeTo); var expectedUrl = $"{_url}/{coin}/{_method}/{timeStampFrom}/{timeStampTo}"; var request = new TradesGetRequest { Coins = coin, From = dateTimeFrom, To = dateTimeTo }; //Act var resp = _tradesService.BuildTradesUrl(request); //Assert Assert.Equal(expectedUrl, resp); }
public async Task <IEnumerable <Trades> > Get(TradesGetRequest request) { var url = BuildTradesUrl(request); var resp = await _httpRequestHandler.Get(url); return(JsonConvert.DeserializeObject <List <Trades> >(await resp.Content.ReadAsStringAsync())); }
public async Task <ActionResult> Get(TradesGetRequest request) { var serviceRequest = _mapper.Map <service.TradesGetRequest>(request); var tradesServiceResp = await _tradesService.Get(serviceRequest); var resp = _mapper.Map <IEnumerable <Trades> >(tradesServiceResp); return(Ok(resp)); }
public void Get_Validation() { var request = new TradesGetRequest { Coins = CoinsEnum.BTC, From = DateTime.Now, To = DateTime.Now }; var context = new System.ComponentModel.DataAnnotations.ValidationContext(request, serviceProvider: null, items: null); var results = new List <ValidationResult>(); var resp = Validator.TryValidateObject(request, context, results, true); Assert.True(resp); }
public async Task Get_Empty() { //Arrange var httpResponseMessage = new HttpResponseMessageBuilder().StatusOkEmpty().Build(); _httpRequestHandlerMock.Setup(p => p.Get(It.IsAny <string>())).ReturnsAsync(httpResponseMessage); var request = new TradesGetRequest { Coins = CoinsEnum.BTC }; //Act var resp = await _tradesService.Get(request); //Assert Assert.Null(resp); }
public void Get_Validation_Required_From() { var request = new TradesGetRequest { Coins = CoinsEnum.BTC, To = DateTime.Now }; var context = new System.ComponentModel.DataAnnotations.ValidationContext(request, serviceProvider: null, items: null); var results = new List <ValidationResult>(); var resp = Validator.TryValidateObject(request, context, results, true); Assert.False(resp); Assert.Single(results); Assert.Equal("The From field is required", results[0].ErrorMessage); }
public void BuildTradesUrl() { //Arrange var coin = CoinsEnum.BTC; var expectedUrl = $"{_url}/{coin}/{_method}"; var request = new TradesGetRequest { Coins = coin }; //Act var resp = _tradesService.BuildTradesUrl(request); //Assert Assert.Equal(expectedUrl, resp); }
public async Task Get_FilterByTid() { //Arrange var httpResponseMessage = new HttpResponseMessageBuilder().StatusOk_Trades().Build(); _httpRequestHandlerMock.Setup(p => p.Get(It.IsAny <string>())).ReturnsAsync(httpResponseMessage); var request = new TradesGetRequest { Coins = Domain.CoinsEnum.BTC, Tid = 1 }; //Act var resp = await _tradesService.Get(request); //Assert Assert.NotNull(resp); Assert.Equal(5, resp.ToList().Count); }
public string BuildTradesUrl(TradesGetRequest request) { var timeStampFrom = new Utils().ConvertDateTimeToTimeStamp(request.From); var timeStampTo = new Utils().ConvertDateTimeToTimeStamp(request.To); if (request.Tid != 0) { return(new Utils().BuildUrlWithTid(_url, request.Coins.ToString(), METHOD, request.Tid)); } if (request.From != DateTime.MinValue && request.To != DateTime.MinValue) { return(new Utils().BuildUrl(_url, request.Coins.ToString(), METHOD, timeStampFrom, timeStampTo)); } if (request.From != DateTime.MinValue) { return(new Utils().BuildUrl(_url, request.Coins.ToString(), METHOD, timeStampFrom)); } return(new Utils().BuildUrl(_url, request.Coins.ToString(), METHOD)); }
public async Task Get_statusOk_Empty() { //Arrange var httpResponseMessage = new HttpResponseMessageBuilder().StatusOkEmpty().Build(); _httpRequestHandlerMock.Setup(p => p.Get(It.IsAny <string>())).ReturnsAsync(httpResponseMessage); TradesGetRequest tickerGetRequest = new TradesGetRequest() { Coins = CoinsEnum.BTC }; //Act var result = await _tradesController.Get(tickerGetRequest); var okObjectResult = result as OkObjectResult; var resultList = okObjectResult.Value as List <Trades>; //Assert Assert.Equal(200, okObjectResult.StatusCode); Assert.Empty(resultList); }