package br.com.caelum.calopsita.logic; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; import java.util.Arrays; import org.jmock.Expectations; import org.jmock.Mockery; import org.junit.Before; import org.junit.Test; import br.com.caelum.calopsita.model.Project; import br.com.caelum.calopsita.plugins.prioritization.PrioritizableCard; import br.com.caelum.calopsita.plugins.prioritization.PrioritizationController; import br.com.caelum.calopsita.plugins.prioritization.PrioritizationRepository; import br.com.caelum.calopsita.repository.ProjectRepository; import br.com.caelum.vraptor.util.test.MockResult; public class PrioritizationTest { private Mockery mockery; private PrioritizationController logic; private PrioritizationRepository repository; private ProjectRepository projectRepository; private Project project; @Before public void setUp() throws Exception { mockery = new Mockery(); repository = mockery.mock(PrioritizationRepository.class); projectRepository = mockery.mock(ProjectRepository.class); project = new Project(projectRepository); logic = new PrioritizationController(new MockResult(), repository); mockery.checking(new Expectations() { { allowing(projectRepository).load(project); will(returnValue(project)); ignoring(repository).listCards(project); } }); } @Test public void prioritizingCards() throws Exception { PrioritizableCard card = givenACard(withPriority(5)); PrioritizableCard loaded = shouldLoadFromRepository(card); logic.prioritize(project, Arrays.asList(card)); assertThat(loaded.getPriority(), is(5)); mockery.assertIsSatisfied(); } private PrioritizableCard shouldLoadFromRepository(final PrioritizableCard card) { final PrioritizableCard loaded = new PrioritizableCard(); mockery.checking(new Expectations() { { one(repository).load(card); will(returnValue(loaded)); } }); return loaded; } private PrioritizableCard givenACard(int priority) { PrioritizableCard card = new PrioritizableCard(); card.setPriority(priority); return card; } private int withPriority(int i) { return i; } }