package no.difi.datahotel.logic; import no.difi.datahotel.BaseTest; import no.difi.datahotel.model.Metadata; import no.difi.datahotel.util.MetadataLogger; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; public class UpdateBeanTest extends BaseTest { private UpdateBean updateBean; private FieldBean fieldBean; private ChunkBean chunkBean; private IndexBean indexBean; private SearchBean searchBean; private DataBean dataBean; private MetadataLogger logger; private Metadata metadata; @Before public void before() throws Exception { fieldBean = Mockito.mock(FieldBean.class); chunkBean = Mockito.mock(ChunkBean.class); indexBean = Mockito.mock(IndexBean.class); searchBean = Mockito.mock(SearchBean.class); dataBean = new DataBean(); logger = Mockito.mock(MetadataLogger.class); updateBean = new UpdateBean(); updateBean.setFieldBean(fieldBean); updateBean.setChunkBean(chunkBean); updateBean.setIndexBean(indexBean); updateBean.setSearchBean(searchBean); updateBean.setDataBean(dataBean); metadata = new Metadata(); metadata.setLocation("difi/geo/fylke"); metadata.setLogger(logger); } @Test public void testTriggerMissingTimestamp() { updateBean.validate(metadata); verify(logger).warning("Missing timestamp in metadata file."); } @Test public void testTriggerUpdating() { dataBean.setTimestamp(metadata.getLocation(), -1L); metadata.setUpdated(10L); updateBean.validate(metadata); verify(logger).info("Do not disturb."); } @Test public void testNoAction() { dataBean.setTimestamp(metadata.getLocation(), 10L); metadata.setUpdated(10L); updateBean.validate(metadata); verifyZeroInteractions(logger); } @Test public void testNormalUpdateFirstTime() { metadata.setUpdated(10L); updateBean.validate(metadata); verify(fieldBean).update(metadata); verify(chunkBean).update(metadata); verify(indexBean).update(metadata); verify(searchBean).update(metadata); verify(logger).info("Ready"); } @Test public void testNormalUpdateTimestampHigher() { dataBean.setTimestamp(metadata.getLocation(), 5L); metadata.setUpdated(10L); updateBean.validate(metadata); verify(fieldBean).update(metadata); verify(chunkBean).update(metadata); verify(indexBean).update(metadata); verify(searchBean).update(metadata); verify(logger).info("Ready"); } @Test public void testNormalUpdateTimestampLower() { dataBean.setTimestamp(metadata.getLocation(), 15L); metadata.setUpdated(10L); updateBean.validate(metadata); verify(fieldBean).update(metadata); verify(chunkBean).update(metadata); verify(indexBean).update(metadata); verify(searchBean).update(metadata); verify(logger).info("Ready"); } }