package io.graceland.filter; import javax.servlet.Filter; import org.junit.Test; import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; import com.google.inject.Provider; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class FilterSpecTest { @Test public void sets_values_correctly() { Filter filter = mock(Filter.class); Provider<? extends Filter> filterProvider = mock(Provider.class); when(filterProvider.get()).thenReturn(filter); int priority = 100; String name = "my-name"; FilterPattern pattern1 = mock(FilterPattern.class); FilterPattern pattern2 = mock(FilterPattern.class); FilterSpec filterSpec = new FilterSpec(filterProvider, priority, name, ImmutableList.of(pattern1, pattern2)); assertThat(filterSpec.getFilter(), is(filter)); assertThat(filterSpec.getPriority(), is(priority)); assertThat(filterSpec.getName(), is(name)); assertThat(filterSpec.getPatterns(), containsInAnyOrder(pattern1, pattern2)); } @Test public void orders_ascending_using_priority() { FilterSpec filterSpec1 = new FilterSpec(mock(FilterProvider.class), -100, "first", ImmutableList.<FilterPattern>of()); FilterSpec filterSpec2 = new FilterSpec(mock(FilterProvider.class), 0, "second", ImmutableList.<FilterPattern>of()); FilterSpec filterSpec3 = new FilterSpec(mock(FilterProvider.class), 100, "third", ImmutableList.<FilterPattern>of()); ImmutableList<FilterSpec> outOfOrder = ImmutableList.of(filterSpec2, filterSpec3, filterSpec1); ImmutableList<FilterSpec> ordered = FluentIterable .from(outOfOrder) .toSortedList(FilterSpec.PRIORITY_COMPARATOR); assertThat(ordered, contains(filterSpec1, filterSpec2, filterSpec3)); } }