BasicParameterManager implements ParameterManager { @Override public PreparedParameter getPreparedParameter(final String parameterName) { PreparedParameter preparedParameter = cache.get(parameterName); if (preparedParameter == null) { preparedParameter = requestQueue.resolve(parameterName, request); } return preparedParameter; } BasicParameterManager(ParamPreparer preparer,
            ParameterProvider parameterProvider,
            PreparedParamCache cache,
            ParameterRequestQueue requestQueue); @Override PreparedParameter getPreparedParameter(final String parameterName); @Override List<PreparedEntry> findEntries(String paramName, String[] levelValues);  }
@Test public void shouldPrepareParameterOnlyOnceAndUseCacheInConsequentTries() { Parameter parameter = parameter().withEntries().build(); when(cache.get("param")).thenReturn(null).thenReturn(preparedParameter().forParameter(parameter).build()); when(paramProvider.load("param")).thenReturn(repositoryParameter(parameter).build()); manager.getPreparedParameter("param"); manager.getPreparedParameter("param"); verify(cache, times(2)).get("param"); verify(cache, times(1)).put(eq("param"), any(PreparedParameter.class)); }
@Test public void shouldReturnPreparedParameter() { Parameter parameter = parameter().withEntries().build(); when(cache.get("param")).thenReturn(null); when(paramProvider.load("param")).thenReturn(repositoryParameter(parameter).build()); when(preparer.prepare(any(ParameterFromRepository.class))).thenReturn(preparedParameter().forParameter(parameter).build()); PreparedParameter preparedParameter = manager.getPreparedParameter("param"); assertThat(preparedParameter).isNotNull(); }
@Test public void shouldReturnNullWhenParameterNotFound() { when(paramProvider.load("param")).thenReturn(null); PreparedParameter preparedParameter = manager.getPreparedParameter("param"); assertThat(preparedParameter).isNull(); }