public async Task Put_ShouldReturnCreated_Async() { var request = new UpdateTrade { TradeId = 1, CounterpartyId = 1, Product = "Sugar", Quantity = 100, Price = 400, Date = new DateTime(2020, 2, 25), Direction = "Sell" }; HttpResponseMessage httpResponseMessage; var json = JsonConvert.SerializeObject(request, Formatting.Indented); var encoding = Encoding.UTF8; var content = new StringContent(json, encoding, "application/json"); httpResponseMessage = await this.client.PutAsync("/api/trades", content); Assert.IsTrue(httpResponseMessage.IsSuccessStatusCode); Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode); httpResponseMessage = await this.client.GetAsync("/api/trades/1"); Assert.IsTrue(httpResponseMessage.IsSuccessStatusCode); var responseContent = await httpResponseMessage.Content.ReadAsStringAsync(); var settings = new JsonSerializerSettings { ContractResolver = PrivateResolver.Default }; var trade = JsonConvert.DeserializeObject <Trade>(responseContent, settings); Assert.IsNotNull(trade); Assert.AreEqual(1, trade.Id); Assert.AreEqual(1, trade.CounterpartyId); Assert.AreEqual("Sugar", trade.Product); Assert.AreEqual(100, trade.Quantity); Assert.AreEqual(400m, trade.Price); Assert.AreEqual(new DateTime(2020, 2, 25), trade.Date); Assert.AreEqual(Direction.Sell.Identifier, trade.Direction); }
public async Task <bool> UpdateTradeAsync(UpdateTrade request) { var trade = new Trade.Builder { Id = request.TradeId, Date = request.Date, CounterpartyId = request.CounterpartyId, Product = request.Product, Quantity = request.Quantity, Price = request.Price, Direction = (Direction)request.Direction }.Build(); this.UnitOfWork.TradeRepository.Update(trade); var result = await this.UnitOfWork.SaveChangesAsync(); return(result == 1); }
public async Task <IActionResult> PutAsync([FromBody] UpdateTrade request) { try { var result = await this.service.UpdateTradeAsync(request); if (result) { return(this.Ok()); } return(this.NotFound()); } catch (Exception exception) { this.logger.LogError(exception, Request.Path); return(this.StatusCode(StatusCodes.Status500InternalServerError)); } }
public async Task PutTradeId99_ShouldReturnNotFound_Async() { var request = new UpdateTrade { TradeId = 99, CounterpartyId = 1, Product = "Sugar", Quantity = 100, Price = 400, Date = new DateTime(2020, 2, 25), Direction = "Sell" }; HttpResponseMessage httpResponseMessage; var json = JsonConvert.SerializeObject(request, Formatting.Indented); var encoding = Encoding.UTF8; var content = new StringContent(json, encoding, "application/json"); httpResponseMessage = await this.client.PutAsync("/api/trades", content); Assert.IsFalse(httpResponseMessage.IsSuccessStatusCode); Assert.AreEqual(HttpStatusCode.NotFound, httpResponseMessage.StatusCode); }