@Test
  public void deleteById() throws NotFoundException {
    when(redisTemplateMock.boundHashOps(CONTACT_KEY)).thenReturn(boundHashOperationsMock);
    when(redisTemplateMock.opsForSet()).thenReturn(setOperationsMock);
    when(setOperationsMock.isMember(RedisContactService.KEY_CONTACT_SET, CONTACT_KEY))
        .thenReturn(true);
    initGetHashOperationsForContact(CONTACT_ID);

    Contact deleted = service.deleteById(CONTACT_ID);

    verify(redisTemplateMock, times(2)).boundHashOps(CONTACT_KEY);

    verifyThatContactWasGet();
    verifyThatContactWasDeleted();

    verify(redisTemplateMock, times(2)).opsForSet();
    verify(setOperationsMock, times(1)).isMember(RedisContactService.KEY_CONTACT_SET, CONTACT_KEY);
    verify(setOperationsMock, times(1)).remove(RedisContactService.KEY_CONTACT_SET, CONTACT_KEY);
    verifyNoMoreInteractions(setOperationsMock);

    verifyNoMoreInteractions(boundHashOperationsMock, redisTemplateMock);
    verifyZeroInteractions(contactIdCounterMock);

    assertContact(CONTACT_ID, deleted);
  }
  @Test(expected = NotFoundException.class)
  public void deleteByIdWhenContactIsNotFound() throws NotFoundException {
    when(redisTemplateMock.opsForSet()).thenReturn(setOperationsMock);
    when(setOperationsMock.isMember(RedisContactService.KEY_CONTACT_SET, CONTACT_KEY))
        .thenReturn(false);

    service.deleteById(CONTACT_ID);

    verifyThatExistCheckForContactIsDone(CONTACT_KEY);
    verifyNoMoreInteractions(redisTemplateMock, setOperationsMock);

    verifyZeroInteractions(boundHashOperationsMock, contactIdCounterMock);
  }