예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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()));
        }
예제 #4
0
        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));
        }
예제 #5
0
        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);
        }
예제 #6
0
        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);
        }
예제 #7
0
        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);
        }
예제 #8
0
        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);
        }
예제 #9
0
        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);
        }
예제 #10
0
        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));
        }
예제 #11
0
        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);
        }