public void When_Post_IsCalled_With_CorrectData_Should_RespondWith_CreatedAtRoute() { Cart cart = new Cart(); using (var controller = new CartController(new FakeProductRepository(), cart)) { DummyOrderCreate newOrder = new DummyOrderCreate() { ProductId = 1 }; // Act IActionResult actionResult = controller.Post(newOrder); var createdAtRouteResult = actionResult as CreatedAtRouteResult; // Assert Assert.NotNull(createdAtRouteResult); Assert.Equal(201, createdAtRouteResult.StatusCode); CartLine cartLine = createdAtRouteResult.Value as CartLine; Assert.NotNull(cartLine); Assert.Single(cart.Lines); Assert.Equal(1, cart.Lines.LastOrDefault().Product.ProductId); Assert.Equal("GetLineById", createdAtRouteResult.RouteName); } }
public void When_Post_IsCalled_And_ProductId_Is_Invalid_Should_RespondWith_BadRequest() { Cart cart = new Cart(); using (var controller = new CartController(new FakeProductRepository(), cart)) { DummyOrderCreate newOrder = new DummyOrderCreate() { ProductId = 114 }; // Act IActionResult actionResultNull = controller.Post(newOrder); var badRequestResult1 = actionResultNull as BadRequestObjectResult; // Assert Assert.NotNull(badRequestResult1); Assert.Equal(400, badRequestResult1.StatusCode); } }
public IActionResult Post([FromBody] DummyOrderCreate dummyProduct) { if (dummyProduct == null) { return(BadRequest("Invalid product id")); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var product = repository.GetProductById(dummyProduct.ProductId.Value); if (product.HasNoValue) { return(BadRequest("No product found!")); } var line = cart.AddItem(product.Value, dummyProduct.Quantity); return(CreatedAtRoute("GetLineById", new { id = line.CartLineId }, line)); }