package pl.edu.icm.saos.importer.common; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import org.junit.Before; import org.junit.Test; import pl.edu.icm.saos.persistence.model.CourtType; import pl.edu.icm.saos.persistence.model.MeansOfAppeal; import pl.edu.icm.saos.persistence.repository.MeansOfAppealRepository; /** * @author madryk */ public class JudgmentMeansOfAppealCreatorTest { private JudgmentMeansOfAppealCreator meansOfAppealCreator = new JudgmentMeansOfAppealCreator(); private MeansOfAppealRepository meansOfAppealRepository = mock(MeansOfAppealRepository.class); @Before public void setUp() { meansOfAppealCreator.setMeansOfAppealRepository(meansOfAppealRepository); } //------------------------ TESTS -------------------------- @Test public void fetchOrCreateMeansOfAppeal_FETCH() { // given MeansOfAppeal meansOfAppeal = new MeansOfAppeal(CourtType.SUPREME, "text"); when(meansOfAppealRepository.findOneByCourtTypeAndNameIgnoreCase(meansOfAppeal.getCourtType(), meansOfAppeal.getName())) .thenReturn(meansOfAppeal); // execute MeansOfAppeal retMeansOfAppeal = meansOfAppealCreator.fetchOrCreateMeansOfAppeal(meansOfAppeal.getCourtType(), meansOfAppeal.getName()); // assert assertTrue(meansOfAppeal == retMeansOfAppeal); verify(meansOfAppealRepository).findOneByCourtTypeAndNameIgnoreCase(meansOfAppeal.getCourtType(), meansOfAppeal.getName()); verifyNoMoreInteractions(meansOfAppealRepository); } @Test public void fetchOrCreateMeansOfAppeal_CREATE() { // execute MeansOfAppeal retMeansOfAppeal = meansOfAppealCreator.fetchOrCreateMeansOfAppeal(CourtType.SUPREME, "text"); // assert assertEquals(new MeansOfAppeal(CourtType.SUPREME, "text"), retMeansOfAppeal); verify(meansOfAppealRepository).findOneByCourtTypeAndNameIgnoreCase(CourtType.SUPREME, "text"); verify(meansOfAppealRepository).save(new MeansOfAppeal(CourtType.SUPREME, "text")); verify(meansOfAppealRepository).flush(); verifyNoMoreInteractions(meansOfAppealRepository); } }