### Question:
StreamMetadataCache { CompletableFuture<StreamProperties> getStreamProperties(long streamId) { StreamProperties props = streams.get(streamId); if (null != props) { return FutureUtils.value(props); } return scClient.getStream(streamId).thenApply(propsReturned -> { streams.put(streamId, propsReturned); return propsReturned; }); } StreamMetadataCache(RootRangeClient scClient);   }### Answer:
@Test public void testGetStreamProperties() throws Exception { when(scClient.getStream(anyLong())) .thenReturn(FutureUtils.value(props)); assertEquals(0, cache.getStreams().size()); assertEquals(props, FutureUtils.result(cache.getStreamProperties(1234L))); assertEquals(1, cache.getStreams().size()); verify(scClient, times(1)).getStream(eq(1234L)); }