public void PatchTodoItem_ReturnsUpdatedItem() { var ctx = new TestTodoAppContext(); var controller = new TodoItemsController(ctx) { Request = new HttpRequestMessage { RequestUri = new Uri("http://localhost/api/TodoItems") }, Configuration = new HttpConfiguration() }; controller.Configuration.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); controller.RequestContext.RouteData = new HttpRouteData( route: new HttpRoute(), values: new HttpRouteValueDictionary { { "controller", "TodoItems" } }); var sampleItem = ValidTodoItem(); ctx.Items.Add(sampleItem); var patchItem = new TodoItemPatch() { Title = "Pick the car form the dealership", Description = "Car is in the workshop and will be out from service", DueDate = DateTime.Now.AddDays(3) }; var response = controller.PatchTodoItem(sampleItem.Id, patchItem); Assert.IsNotNull(response); Assert.AreEqual(response.StatusCode, HttpStatusCode.OK); string result; Assert.IsTrue(response.TryGetContentValue <string>(out result)); TodoItem resultItem = JsonConvert.DeserializeObject <TodoItem>(result); Assert.AreEqual(sampleItem.Id, resultItem.Id); Assert.AreEqual(patchItem.Description, resultItem.Description); Assert.AreEqual(patchItem.Title, resultItem.Title); }
public HttpResponseMessage PatchTodoItem(int itemId, TodoItemPatch patchItem) { if (patchItem == null || !ModelState.IsValid) { return(new HttpResponseMessage(HttpStatusCode.BadRequest)); } TodoItem todoItem = db.Items.FirstOrDefault(i => i.Id == itemId); if (todoItem == null) { return(new HttpResponseMessage(HttpStatusCode.NotFound)); } todoItem.Title = patchItem.Title; todoItem.Description = patchItem.Description; todoItem.DueDate = patchItem.DueDate; return(Request.CreateResponse(JsonConvert.SerializeObject(todoItem))); }
public void PatchTodoItem_Returns404() { var ctx = new TestTodoAppContext(); var controller = new TodoItemsController(ctx) { Request = new HttpRequestMessage { RequestUri = new Uri("http://localhost/api/TodoItems") }, Configuration = new HttpConfiguration() }; controller.Configuration.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); controller.RequestContext.RouteData = new HttpRouteData( route: new HttpRoute(), values: new HttpRouteValueDictionary { { "controller", "TodoItems" } }); var sampleItem = ValidTodoItem(); //sampleItem not added to the context var patchItem = new TodoItemPatch() { Title = "Pick the car form the dealership", Description = "Car is in the workshop and will be out from service", DueDate = DateTime.Now.AddDays(3) }; var response = controller.PatchTodoItem(sampleItem.Id, patchItem); Assert.IsNotNull(response); Assert.AreEqual(response.StatusCode, HttpStatusCode.NotFound); }