package tw.com.unit; import com.amazonaws.services.cloudformation.model.Stack; import org.junit.Before; import org.junit.Test; import tw.com.entity.EnvironmentTag; import tw.com.entity.SearchCriteria; import tw.com.entity.StackEntry; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import static java.util.Arrays.*; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class TestSearchCriteria { private StackEntry entryA; private StackEntry entryB; private StackEntry entryC; private StackEntry entryD; private SearchCriteria criteria; private StackEntry entryE; private StackEntry entryF; private StackEntry entryG; @Before public void beforeEachTestRuns() { Stack stack = new Stack(); entryA = new StackEntry("project", new EnvironmentTag("anEnv"), stack); entryB = new StackEntry("project", new EnvironmentTag("someOtherTag"), stack); entryC = new StackEntry("project", new EnvironmentTag("anEnv"), stack).setBuildNumber(42); entryD = new StackEntry("OtherProject", new EnvironmentTag("anEnv"), stack); entryE = new StackEntry("OtherProject", new EnvironmentTag("anEnv"), stack).setBuildNumber(42); entryF = new StackEntry("project", new EnvironmentTag("anEnv"), stack).setIndex(98); Set<Integer> updates= new HashSet<Integer>(asList(140)); entryG = new StackEntry("project", new EnvironmentTag("anEnv"), stack).setUpdateIndex(updates); criteria = new SearchCriteria(); } @Test public void shouldMatchOnEnvProjectAndUpdateIndex() { criteria.withEnv("anEnv").withUpdateIndex(140); assertFalse(criteria.matches(entryF)); assertTrue(criteria.matches(entryG)); } @Test public void shouldMatchOnEnvProjectAndIndex() { criteria.withEnv("anEnv").withIndex(98); assertFalse(criteria.matches(entryA)); assertTrue(criteria.matches(entryF)); } @Test public void shouldMatchOnEnvAndProject() { criteria.withEnv("anEnv").withProject("OtherProject"); assertTrue(criteria.matches(entryD)); assertFalse(criteria.matches(entryA)); } @Test public void shouldMatchOnEnvProjectAndBuild() { criteria.withEnv("anEnv").withProject("project").withBuild(42); assertTrue(criteria.matches(entryC)); assertFalse(criteria.matches(entryA)); } @Test public void shouldMatchOnEnvAndBuild() { criteria.withEnv("anEnv").withBuild(42); assertTrue(criteria.matches(entryC)); assertTrue(criteria.matches(entryE)); assertFalse(criteria.matches(entryA)); } @Test public void shouldMatchOnEnv() { criteria.withEnv("anEnv"); assertTrue(criteria.matches(entryA)); assertFalse(criteria.matches(entryB)); assertTrue(criteria.matches(entryC)); } @Test public void shouldMatchOnBuild() { criteria.withBuild(42); assertFalse(criteria.matches(entryA)); assertFalse(criteria.matches(entryB)); assertTrue(criteria.matches(entryC)); } @Test public void shouldMatchOnProject() { criteria.withProject("project"); assertTrue(criteria.matches(entryA)); assertTrue(criteria.matches(entryB)); assertTrue(criteria.matches(entryC)); assertFalse(criteria.matches(entryD)); } }