package com.dbdeploy.scripts; import com.dbdeploy.exceptions.DuplicateChangeScriptException; import com.dbdeploy.scripts.ChangeScript; import com.dbdeploy.scripts.ChangeScriptRepository; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import org.junit.Test; import java.util.Arrays; import java.util.List; public class ChangeScriptRepositoryTest { @Test public void shouldReturnAnOrderedListOfChangeScripts() throws Exception { ChangeScript one = new ChangeScript(1); ChangeScript two = new ChangeScript(2); ChangeScript three = new ChangeScript(3); ChangeScript four = new ChangeScript(4); ChangeScriptRepository repository = new ChangeScriptRepository(Arrays.asList( three, two, four, one )); List<ChangeScript> list = repository.getOrderedListOfDoChangeScripts(); assertThat(4, equalTo(list.size())); assertSame(one, list.get(0)); assertSame(two, list.get(1)); assertSame(three, list.get(2)); assertSame(four, list.get(3)); } @Test public void shouldThrowWhenChangeScriptListContainsDuplicates() throws Exception { ChangeScript two = new ChangeScript(2); ChangeScript three = new ChangeScript(3); ChangeScript anotherTwo = new ChangeScript(2); try { new ChangeScriptRepository(Arrays.asList(three, two, anotherTwo)); fail("expected exception"); } catch (DuplicateChangeScriptException ex) { assertEquals("There is more than one change script with number 2", ex.getMessage()); } } @Test public void shouldAllowChangeScriptsThatStartFromZero() throws Exception { ChangeScript zero = new ChangeScript(0); ChangeScript four = new ChangeScript(4); ChangeScriptRepository repository = new ChangeScriptRepository(Arrays.asList( zero, four )); List<ChangeScript> list = repository.getOrderedListOfDoChangeScripts(); assertThat(2, equalTo(list.size())); assertSame(zero, list.get(0)); assertSame(four, list.get(1)); } }