public void Put_WhenTradeResourceInvalid_ReturnsWithValidationErrors()
        {
            // Get a list of bids so we can grab the correct id that is stored in
            // the (in)memory db
            var getResources = _client.AuthorizeRequest().GetAsync(APIROUTE).Result;

            getResources.EnsureSuccessStatusCode();

            var resourcesRaw = getResources.Content.ReadAsStringAsync().Result;
            var resources    = JsonConvert.DeserializeObject <IEnumerable <TradeResource> >(resourcesRaw);

            // Verify we have something to look up
            Assert.NotEmpty(resources);

            // The Test
            // Arrange - Grab first one
            var resource = resources.FirstOrDefault();

            var trade = new EditTradeResource
            {
                Account     = "tester",
                BuyQuantity = "great",
                Type        = "Buyaaaaaaaaaaaaaaa"
            };

            // Act
            var response = _client.AuthorizeRequest().PutAsync(APIROUTE + resource.TradeId, ClientHelper.EncodeContent(trade)).Result;
            var json     = response.Content.ReadAsStringAsync().Result;

            Assert.Equal(System.Net.HttpStatusCode.BadRequest, response.StatusCode);
            Assert.Contains("validation errors", json);
        }
Beispiel #2
0
        public ValidationResult ValidateResource(EditTradeResource resource)
        {
            var result = new ValidationResult();

            if (resource != null)
            {
                var validator = new TradeValidator();
                var vr        = validator.Validate(resource);

                if (vr.IsValid)
                {
                    result.IsValid = true;
                    return(result);
                }


                if (vr.Errors.Any())
                {
                    foreach (var error in vr.Errors)
                    {
                        result.ErrorMessages.Add(error.PropertyName, error.ErrorMessage);
                    }
                }
            }

            return(result);
        }
        public void Put_ReturnsOk()
        {
            // Get a list of bids so we can grab the correct id that is stored in
            // the (in)memory db
            var getResources = _client.AuthorizeRequest().GetAsync(APIROUTE).Result;

            getResources.EnsureSuccessStatusCode();

            var resourcesRaw = getResources.Content.ReadAsStringAsync().Result;
            var resources    = JsonConvert.DeserializeObject <IEnumerable <TradeResource> >(resourcesRaw);

            // Verify we have something to look up
            Assert.NotEmpty(resources);

            // The Test
            // Arrange - Grab first one
            var resource = resources.FirstOrDefault();

            var trade = new EditTradeResource
            {
                Account     = "tester",
                BuyQuantity = "10",
                Type        = "Buy"
            };

            // Act
            var response = _client.AuthorizeRequest().PutAsync(APIROUTE + resource.TradeId, ClientHelper.EncodeContent(trade)).Result;

            // Assert Ok
            response.EnsureSuccessStatusCode();
        }
Beispiel #4
0
        public IActionResult Create([FromBody] EditTradeResource trade)
        {
            AppLogger.LogResourceRequest(nameof(Create), base.GetUsernameForRequest());

            try
            {
                var result = _tradeService.ValidateResource(trade);

                if (!result.IsValid)
                {
                    GetErrorsForModelState(result.ErrorMessages);
                }

                if (ModelState.IsValid)
                {
                    _tradeService.Add(trade);

                    return(CreatedAtAction(nameof(Create), trade));
                }

                return(ValidationProblem());
            }
            catch (Exception ex)
            {
                return(BadRequestExceptionHandler(ex, nameof(Create)));
            }
        }
Beispiel #5
0
        public IActionResult Update(int id, [FromBody] EditTradeResource trade)
        {
            AppLogger.LogResourceRequest(nameof(Update), base.GetUsernameForRequest());

            try
            {
                var result = _tradeService.ValidateResource(trade);

                if (!result.IsValid)
                {
                    GetErrorsForModelState(result.ErrorMessages);
                }

                if (ModelState.IsValid)
                {
                    var checkTrade = _tradeService.FindById(id);

                    if (checkTrade == null)
                    {
                        return(NotFound(AppConfig.ResourceNotFoundById + id));
                    }

                    _tradeService.Update(id, trade);

                    return(Ok());
                }

                return(ValidationProblem());
            }
            catch (Exception ex)
            {
                return(BadRequestExceptionHandler(ex, nameof(Update)));
            }
        }
Beispiel #6
0
        public void Update(int id, EditTradeResource resource)
        {
            var trade = _tradeRepo.FindById(id);

            if (resource != null && trade != null)
            {
                _tradeRepo.Update(id, _mapper.Map(resource, trade));
                _tradeRepo.SaveChanges();
            }
        }
Beispiel #7
0
        public TradeResource Add(EditTradeResource resource)
        {
            if (resource == null)
            {
                throw new ArgumentNullException();
            }

            var trade = _mapper.Map <Trade>(resource);

            _tradeRepo.Add(trade);
            _tradeRepo.SaveChanges();

            return(_mapper.Map <TradeResource>(trade));
        }
        public void Put_WhenNull_ReturnsNotFound()
        {
            var trade = new EditTradeResource
            {
                Account     = "tester",
                BuyQuantity = "10",
                Type        = "Buy"
            };

            // Act
            var response = _client.AuthorizeRequest().PutAsync(APIROUTE + 99999, ClientHelper.EncodeContent(trade)).Result;

            // Assert
            Assert.Equal(System.Net.HttpStatusCode.NotFound, response.StatusCode);
        }
        public void Post_WhenResourceIsInvalied_ReturnsBadRequestWithValidationErrors()
        {
            var trade = new EditTradeResource
            {
                Account     = "tester",
                BuyQuantity = "all of them", // validation should fail here - cannot covert to double
                Type        = "Buy"
            };

            var response = _client.AuthorizeRequest().PostAsync(APIROUTE, ClientHelper.EncodeContent(trade)).Result;
            var json     = response.Content.ReadAsStringAsync().Result;

            Assert.Equal(System.Net.HttpStatusCode.BadRequest, response.StatusCode);
            Assert.Contains("validation errors", json);
        }
        public void Post_ReturnsOk_WithNewTradeResource()
        {
            var trade = new EditTradeResource
            {
                Account     = "tester",
                BuyQuantity = "10",
                Type        = "Buy"
            };

            var response = _client.AuthorizeRequest().PostAsync(APIROUTE, ClientHelper.EncodeContent(trade)).Result;

            response.EnsureSuccessStatusCode();

            var json   = response.Content.ReadAsStringAsync().Result;
            var result = JsonConvert.DeserializeObject <TradeResource>(json);

            Assert.NotNull(result);
            Assert.IsType <TradeResource>(result);
        }