### Question:
FulltextIndexChangeListener implements ChangeListener { @Override public void onPropertyUpdate(Collection collection, Optional<Vertex> oldVertex, Vertex newVertex) { handleChange(collection, newVertex, oldVertex.orElse(null)); } FulltextIndexChangeListener(IndexHandler indexHandler, GraphWrapper graphWrapper); @Override void onCreate(Collection collection, Vertex vertex); @Override void onPropertyUpdate(Collection collection, Optional<Vertex> oldVertex, Vertex newVertex); @Override void onRemoveFromCollection(Collection collection, Optional<Vertex> oldVertex, Vertex newVertex); @Override void onAddToCollection(Collection collection, Optional<Vertex> oldVertex, Vertex newVertex); @Override void onCreateEdge(Collection collection, Edge edge); @Override void onEdgeUpdate(Collection collection, Edge oldEdge, Edge newEdge);  }### Answer:
@Test public void onPropertyUpdateRemovesTheOldVertexFromTheIndexBeforeAddingTheNewOne() { IndexHandler indexHandler = mock(IndexHandler.class); GraphWrapper graphWrapper = newGraph() .withVertex("newVertex", v -> v .withProperty("vrecoll_name", "new") ) .withVertex(v -> v .withProperty("vrecoll_name", "old") .withOutgoingRelation("VERSION_OF", "newVertex") ) .wrap(); FulltextIndexChangeListener instance = new FulltextIndexChangeListener(indexHandler, graphWrapper); Collection collection = new VresBuilder() .withVre("thevre", "vre", vre -> vre .withCollection("vrecolls", coll -> coll .withDisplayName(localProperty("vrecoll_name")) ) ) .build().getCollection("vrecolls").get(); Vertex oldVertex = graphWrapper.getGraph().traversal().V().has("vrecoll_name", "old").next(); Vertex newVertex = graphWrapper.getGraph().traversal().V().has("vrecoll_name", "new").next(); instance.onPropertyUpdate(collection, Optional.of(oldVertex), newVertex); verify(indexHandler).upsertIntoQuickSearchIndex(collection, "new", newVertex, oldVertex); }