@Test(expected = NotFoundException.class)
  public void shouldFailUpdateNonexistentTodoItemIs() throws Exception {
    final TodoItem todoItem = createTodoItem();
    given(todoItems.updateTodoItem(todoItem.getId(), todoItem.getTitle(), todoItem.getCompleted()))
        .willReturn(Optional.empty());

    todoItemsResource.updateTodoItem(todoItem.getId(), todoItem);
  }
  @Test
  public void shouldUpdateTodoItem() throws Exception {
    final TodoItem todoItem = createTodoItem();
    given(todoItems.updateTodoItem(todoItem.getId(), todoItem.getTitle(), todoItem.getCompleted()))
        .willReturn(Optional.of(todoItem));

    final Response response = todoItemsResource.updateTodoItem(todoItem.getId(), todoItem);

    assertThat(response.getStatus(), is(equalTo(Status.OK)));
  }
  @Test
  public void shouldCreateTodoItem() throws Exception {
    final TodoItem todoItem = createTodoItem();
    final UriInfo uriInfo = mock(UriInfo.class);
    final UriBuilder uriBuilder = mock(UriBuilder.class);
    final URI todoUri = new URI(baseUri + todoItem.getId());
    given(todoItems.createTodoItem(todoItem.getTitle(), todoItem.getCompleted()))
        .willReturn(todoItem);
    given(uriInfo.getAbsolutePathBuilder()).willReturn(uriBuilder);
    given(uriBuilder.path("/" + todoItem.getId())).willReturn(uriBuilder);
    given(uriBuilder.build()).willReturn(todoUri);

    final Response response = todoItemsResource.createTodoItem(todoItem, uriInfo);

    assertThat(response.getStatus(), is(equalTo(Status.CREATED)));
  }