package de.otto.edison.jobs.domain; import de.otto.edison.jobs.definition.DefaultJobDefinition; import de.otto.edison.jobs.definition.JobDefinition; import de.otto.edison.jobs.eventbus.JobEventPublisher; import de.otto.edison.jobs.repository.JobMetaRepository; import org.junit.Before; import org.junit.Test; import java.time.Instant; import java.util.Optional; import static de.otto.edison.jobs.definition.DefaultJobDefinition.*; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; public class MetaJobRunnableTest { JobMetaRepository metaRepository; MetaJobRunnable testee; @Before public void setUp() throws Exception { metaRepository = mock(JobMetaRepository.class); testee = new MetaJobRunnable("someJob", metaRepository) { @Override public JobDefinition getJobDefinition() { return cronJobDefinition("someJob", "Some Job", "", "* * * * *", 0, Optional.empty()); } @Override public void execute(final JobEventPublisher jobEventPublisher) { } }; } @Test public void shouldGetJobType() { assertThat(testee.getJobType(), is("someJob")); } @Test public void shouldDeleteMeta() { testee.deleteMeta("key"); verify(metaRepository).setValue("someJob", "key", null); } @Test public void shouldSetMetaAsString() { testee.setMeta("key", "value"); verify(metaRepository).setValue("someJob", "key", "value"); } @Test public void shouldSetMetaAsInt() { testee.setMeta("key", 42); verify(metaRepository).setValue("someJob", "key", "42"); } @Test public void shouldSetMetaAsLong() { testee.setMeta("key", 42L); verify(metaRepository).setValue("someJob", "key", "42"); } @Test public void shouldSetMetaAsInstant() { testee.setMeta("key", Instant.ofEpochMilli(42)); verify(metaRepository).setValue("someJob", "key", "42"); } @Test public void shouldGetJobMetaAsString() { when(metaRepository.getValue("someJob", "key")).thenReturn("42"); final String value = testee.getMetaAsString("key"); assertThat(value, is("42")); } @Test public void shouldGetJobMetaAsInt() { when(metaRepository.getValue("someJob", "key")).thenReturn("42"); final int value = testee.getMetaAsInt("key", -1); assertThat(value, is(42)); } @Test public void shouldGetJobMetaAsLong() { when(metaRepository.getValue("someJob", "key")).thenReturn("42"); final long value = testee.getMetaAsLong("key", -1L); assertThat(value, is(42L)); } @Test public void shouldGetJobMetaAsInstant() { when(metaRepository.getValue("someJob", "key")).thenReturn("42"); final Instant value = testee.getMetaAsInstant("key"); assertThat(value.toEpochMilli(), is(42L)); } }