package com.hubspot.jinjava.loader; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; import java.nio.charset.StandardCharsets; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import com.hubspot.jinjava.interpret.JinjavaInterpreter; @RunWith(MockitoJUnitRunner.class) @SuppressWarnings("unchecked") public class CascadingResourceLocatorTest { @Mock ResourceLocator first; @Mock ResourceLocator second; @Mock JinjavaInterpreter interpreter; CascadingResourceLocator locator; @Before public void setup() { locator = new CascadingResourceLocator(first, second); } @Test public void itUsesResponseFromFirstIfPresent() throws Exception { when(first.getString("foo", StandardCharsets.UTF_8, interpreter)).thenReturn("bar"); assertThat(locator.getString("foo", StandardCharsets.UTF_8, interpreter)).isEqualTo("bar"); } @Test public void itUsesResponseFromSecondWhenNotFoundOnFirst() throws Exception { when(first.getString("foo", StandardCharsets.UTF_8, interpreter)).thenThrow(ResourceNotFoundException.class); when(second.getString("foo", StandardCharsets.UTF_8, interpreter)).thenReturn("bar"); assertThat(locator.getString("foo", StandardCharsets.UTF_8, interpreter)).isEqualTo("bar"); } @Test(expected = ResourceNotFoundException.class) public void notFoundWhenAllLocatorsReturnNotFound() throws Exception { when(first.getString("foo", StandardCharsets.UTF_8, interpreter)).thenThrow(ResourceNotFoundException.class); when(second.getString("foo", StandardCharsets.UTF_8, interpreter)).thenThrow(ResourceNotFoundException.class); locator.getString("foo", StandardCharsets.UTF_8, interpreter); } }