@Test public void shouldRemovePropertyNameFromLoadedPropertiesAndMapWhenRemoveIsCalled() { // Given final ElementValueLoader elementLoader = mock(ElementValueLoader.class); final Properties properties = new Properties(); final String propertyName = "property name"; final String propertyValue = "property value"; final LazyProperties lazyProperties = new LazyProperties(properties, elementLoader); given(elementLoader.getProperty(propertyName, lazyProperties)).willReturn(propertyValue); lazyProperties.get(propertyName); // call it to load the value. // When lazyProperties.remove(propertyName); lazyProperties.get(propertyName); // Then verify(elementLoader, times(2)).getProperty(propertyName, lazyProperties); // should be called twice before and after removeProperty() assertEquals(propertyValue, properties.get(propertyName)); }
@Test public void shouldRemovePropertyNamesFromLoadedPropertiesAndMapWhenRemovePropertiesIsCalled() { // Given final ElementValueLoader elementLoader = mock(ElementValueLoader.class); final Properties properties = new Properties(); final String propertyName1 = "property name1"; final String propertyName2 = "property name2"; final String propertyValue1 = "property value1"; final String propertyValue2 = "property value2"; final LazyProperties lazyProperties = new LazyProperties(properties, elementLoader); given(elementLoader.getProperty(propertyName1, lazyProperties)).willReturn(propertyValue1); given(elementLoader.getProperty(propertyName2, lazyProperties)).willReturn(propertyValue2); lazyProperties.get(propertyName1); // call it to load value 1. lazyProperties.get(propertyName2); // call it to load value 2. // When lazyProperties.remove(Sets.newSet(propertyName1)); lazyProperties.get(propertyName1); lazyProperties.get(propertyName2); // Then verify(elementLoader, times(2)).getProperty(propertyName1, lazyProperties); verify(elementLoader, times(1)).getProperty(propertyName2, lazyProperties); assertEquals(propertyValue1, properties.get(propertyName1)); assertEquals(propertyValue2, properties.get(propertyName2)); }