public async Task Post_ShouldInsertShareRate() { var symbol = "CBI"; var shareRate = new ShareRates { Value = 330.0M, TimeStamp = new DateTime(2018, 08, 17, 5, 0, 0) }; var shares = new List <Share>() { new Share() { Id = Guid.NewGuid(), Symbol = symbol } }; // Arrange _shareRepositoryMock.Setup(repo => repo.Query()) .Returns(shares.AsQueryable()); // Act var result = await _shareController.PostRate(symbol, shareRate); // Assert Assert.NotNull(result); var createdResult = result as CreatedResult; Assert.NotNull(createdResult); Assert.AreEqual(201, createdResult.StatusCode); }
public async Task <IActionResult> PostRate([FromRoute] string symbol, [FromBody] ShareRates rate) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (rate.TimeStamp == DateTime.MinValue) { rate.TimeStamp = DateTime.Now; } var share = await _shareRepository.Query().Where(x => x.Symbol.Equals(symbol)).FirstOrDefaultAsync(); var newRate = new ShareRates { ShareId = share.Id, TimeStamp = rate.TimeStamp, Value = rate.Value }; share.Rates.Add(newRate); await _shareRepository.UpdateAsync(share); return(Created($"shares/latest", newRate)); }