@Test
public void testTraverseWithObjectsAndParams() throws Exception {

  UUID objectId1 = UUID.randomUUID();
  UUID objectId2 = UUID.randomUUID();
  String query = "g.outE()";
  when(objectFactDao.getObject(objectId1)).thenReturn(new ObjectRecord().setId(objectId1));
  when(objectFactDao.getObject(objectId2)).thenReturn(new ObjectRecord().setId(objectId2));
  Long before = 1L;
  Long after = 2L;
  TraverseGraphByObjectsRequest request = new TraverseGraphByObjectsRequest()
          .setQuery(query)
          .setBefore(before)
          .setAfter(after)
          .setIncludeRetracted(true)
          .setLimit(10)
          .setObjects(set(objectId1.toString(), objectId2.toString()));
  delegate.handle(request);
  verify(traverseGraphHandler).traverse(
          eq(set(objectId1, objectId2)),
          eq(query),
          argThat(traverseParams -> {
            assertTrue(traverseParams.isIncludeRetracted());
            assertEquals(after, traverseParams.getAfterTimestamp());
            assertEquals(before, traverseParams.getBeforeTimestamp());
            assertEquals(10, traverseParams.getLimit());
            return true;
          }));
}