public void UpdateTodo() { var repository = new InMemoryTodoRepository(); var originalTodo = new TodoModel { completed = true, deadlineUtc = DateTime.UtcNow, moreDetails = "more", task = "task" }; originalTodo = repository.Add(originalTodo); var updatedTodo = new TodoModel { id = originalTodo.id, completed = false, deadlineUtc = DateTime.Now, moreDetails = "more details", task = "task info" }; repository.Update(updatedTodo).ShouldBeTrue(); var updatedOriginal = repository.Get(originalTodo.id); updatedOriginal.id.ShouldEqual(updatedTodo.id); updatedOriginal.completed.ShouldEqual(updatedTodo.completed); updatedOriginal.deadlineUtc.ShouldEqual(updatedTodo.deadlineUtc); updatedOriginal.moreDetails.ShouldEqual(updatedTodo.moreDetails); updatedOriginal.task.ShouldEqual(updatedTodo.task); }
public void GetTodo() { var todo = new TodoModel { task = "My task" }; var repository = new InMemoryTodoRepository(); repository.Add(todo); repository.Get(todo.id).ShouldEqual(todo); }
public TodoModel Add(TodoModel item) { int id = Interlocked.Increment(ref _lastId); item.id = id; _data.Add(item); return item; }
public bool Update(TodoModel item) { var entry = _data.FirstOrDefault(x => x.id == item.id); if (entry == null) return false; entry.completed = item.completed; entry.deadlineUtc = item.deadlineUtc; entry.moreDetails = item.moreDetails; entry.task = item.task; return true; }
// POST api/todos public IHttpActionResult Post(TodoModel todo) { if (todo == null) { return BadRequest("Todo can't be null"); } var addedTodo = _repository.Add(todo); var representation = _mapper.Map<TodoRepresentation>(addedTodo); return CreatedAtRoute("DefaultApi", new {representation.id }, representation); }
public void SetIncrementedIdWhenAddingTodo() { var todo = new TodoModel {task = "My task"}; var repository = new InMemoryTodoRepository(); todo = repository.Add(todo); todo.id.ShouldEqual(1); todo = repository.Add(todo); todo.id.ShouldEqual(2); todo = repository.Add(todo); todo.id.ShouldEqual(3); }
public void AddTodo() { var controller = new TodosController(_mockRepository.Object, Mapper.Engine); MockHelpers.SetupMockUrl(controller); TodoModel todo = new TodoModel { deadlineUtc = DateTime.UtcNow, completed = false, task = "Some task" }; _mockRepository.Setup(x => x.Add(todo)).Returns(todo); var response = controller.Post(todo) as CreatedAtRouteNegotiatedContentResult<TodoRepresentation>; response.ShouldNotBeNull(); response.RouteName.ShouldEqual("DefaultApi"); response.RouteValues["id"].ShouldEqual(response.Content.id); AreEquivalent(todo, response.Content).ShouldBeTrue(); _mockRepository.Verify(x => x.Add(todo), Times.Once()); }
/// <summary> /// Used to determine if the model and representations are equivalent /// </summary> /// <param name="model"></param> /// <param name="representation"></param> /// <returns></returns> private static bool AreEquivalent(TodoModel model, TodoRepresentation representation) { return model.id == representation.id && model.completed == representation.completed && model.deadlineUtc == representation.deadlineUtc && model.moreDetails == representation.moreDetails && model.task == representation.task; }
public void UpdateTodoOnPut() { var controller = new TodosController(_mockRepository.Object, Mapper.Engine); var todo = new TodoModel { id = 5, task = "My task" }; var updatedTodo = new TodoModel { id = 5, task = "Updated task" }; _mockRepository.Setup(x => x.Update(updatedTodo)).Returns(true); var response = controller.Put(todo.id, updatedTodo) as OkResult; response.ShouldNotBeNull(); _mockRepository.Verify(x => x.Update(updatedTodo), Times.Once); }
public void GetTodo() { var controller = new TodosController(_mockRepository.Object, Mapper.Engine); TodoModel todo = new TodoModel { id = 3, deadlineUtc = DateTime.UtcNow, completed = false, task = "Some task" }; _mockRepository.Setup(x => x.Get(todo.id)).Returns(todo); var response = controller.Get(todo.id) as OkNegotiatedContentResult<TodoRepresentation>; response.ShouldNotBeNull(); AreEquivalent(todo, response.Content).ShouldBeTrue(); }
// PUT api/todos/5 public IHttpActionResult Put(int id, TodoModel todo) { if (todo == null) { return BadRequest("Todo can't be null"); } todo.id = id; bool updateResult = _repository.Update(todo); if (!updateResult) { return BadRequest(String.Format("Can't update todo with id {0}", id)); } return Ok(); }