@SuppressWarnings({"resource", "unchecked", "rawtypes"})
  @Test
  public void updateStreamWithListeners() {
    Repository decoratedRepository = mock(Repository.class);
    EntityListenerRepositoryDecorator entityListenerRepositoryDecorator =
        new EntityListenerRepositoryDecorator(decoratedRepository);
    EntityListener entityListener0 =
        when(mock(EntityListener.class).getEntityId()).thenReturn(Integer.valueOf(1)).getMock();
    EntityListener entityListener1 =
        when(mock(EntityListener.class).getEntityId()).thenReturn(Integer.valueOf(2)).getMock();
    entityListenerRepositoryDecorator.addEntityListener(entityListener0);
    entityListenerRepositoryDecorator.addEntityListener(entityListener1);

    Entity entity0 = when(mock(Entity.class).getIdValue()).thenReturn(Integer.valueOf(1)).getMock();
    Entity entity1 = when(mock(Entity.class).getIdValue()).thenReturn(Integer.valueOf(2)).getMock();
    Stream<Entity> entities = Stream.of(entity0, entity1);
    entityListenerRepositoryDecorator.update(entities);

    ArgumentCaptor<Stream<Entity>> captor = ArgumentCaptor.forClass((Class) Stream.class);
    verify(decoratedRepository).update(captor.capture());
    assertEquals(captor.getValue().collect(Collectors.toList()), Arrays.asList(entity0, entity1));

    verify(entityListener0, times(1)).postUpdate(entity0);
    verify(entityListener1, times(1)).postUpdate(entity1);
  }
  @SuppressWarnings("resource")
  @Test
  public void updateEntityWithoutListener() {
    Repository decoratedRepository = mock(Repository.class);
    EntityListenerRepositoryDecorator entityListenerRepositoryDecorator =
        new EntityListenerRepositoryDecorator(decoratedRepository);
    EntityListener entityListener0 =
        when(mock(EntityListener.class).getEntityId()).thenReturn(Integer.valueOf(-1)).getMock();
    entityListenerRepositoryDecorator.addEntityListener(entityListener0);

    Entity entity = when(mock(Entity.class).getIdValue()).thenReturn(Integer.valueOf(1)).getMock();
    entityListenerRepositoryDecorator.update(entity);

    verify(decoratedRepository).update(entity);
    verify(entityListener0, times(0)).postUpdate(entity);
  }