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); }
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(); }
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))); } }
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))); } }
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(); } }
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); }