package fr.keemto.core.fetching; import com.google.common.collect.Lists; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import java.util.ArrayList; import java.util.List; import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class DefaultFetcherLocatorTest { @Rule public ExpectedException thrown = ExpectedException.none(); @Test public void whenFetcherCannotBeFoundShouldThrowEx() throws Exception { thrown.expect(FetcherConfigurationException.class); List<Fetcher> emptyFetcherList = new ArrayList<Fetcher>(); FetcherLocator fetcherLocator = new DefaultFetcherLocator(emptyFetcherList); fetcherLocator.getFetcher("myProvider"); } @Test public void shouldReturnFetcherForSpecificProvider() throws Exception { Fetcher fetcher = mock(Fetcher.class); FetcherLocator fetcherLocator = new DefaultFetcherLocator(Lists.newArrayList(fetcher)); when(fetcher.getProviderId()).thenReturn("twitter"); Fetcher twitterFetcher = fetcherLocator.getFetcher("twitter"); assertThat(twitterFetcher, notNullValue()); assertThat(twitterFetcher, equalTo(fetcher)); } @Test public void canCheckIfProviderHasFetcher() throws Exception { Fetcher fetcher = mock(Fetcher.class); FetcherLocator fetcherLocator = new DefaultFetcherLocator(Lists.newArrayList(fetcher)); when(fetcher.getProviderId()).thenReturn("twitter"); assertThat(fetcherLocator.hasFetcherFor("twitter"), is(true)); assertThat(fetcherLocator.hasFetcherFor("unknown"), is(false)); } }