Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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)));
        }
Ejemplo n.º 3
0
        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);
        }