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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }