package net.joelinn.quartz.mixin; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import net.joelinn.quartz.jobstore.mixin.CronTriggerMixin; import org.junit.Before; import org.junit.Test; import org.quartz.CronScheduleBuilder; import org.quartz.CronTrigger; import org.quartz.TriggerBuilder; import org.quartz.impl.triggers.CronTriggerImpl; import java.util.HashMap; import java.util.Map; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.collection.IsMapContaining.hasKey; import static org.junit.Assert.assertEquals; /** * Joe Linn * 7/15/2014 */ public class CronTriggerMixinTest { protected ObjectMapper mapper; @Before public void setUp(){ mapper = new ObjectMapper(); mapper.addMixIn(CronTrigger.class, CronTriggerMixin.class); } @Test public void serialization(){ String cron = "0/5 * * * * ?"; CronTrigger trigger = TriggerBuilder.newTrigger() .forJob("testJob", "testGroup") .withIdentity("testTrigger", "testTriggerGroup") .withSchedule(CronScheduleBuilder.cronSchedule(cron)) .usingJobData("timeout", 5) .withDescription("A description!") .build(); Map<String, String> triggerMap = mapper.convertValue(trigger, new TypeReference<HashMap<String, String>>() {}); assertThat(triggerMap, hasKey("name")); assertEquals("testTrigger", triggerMap.get("name")); assertThat(triggerMap, hasKey("group")); assertEquals("testTriggerGroup", triggerMap.get("group")); assertThat(triggerMap, hasKey("jobName")); assertEquals("testJob", triggerMap.get("jobName")); CronTriggerImpl cronTrigger = mapper.convertValue(triggerMap, CronTriggerImpl.class); assertEquals(trigger.getKey().getName(), cronTrigger.getKey().getName()); assertEquals(trigger.getKey().getGroup(), cronTrigger.getKey().getGroup()); assertEquals(trigger.getStartTime(), cronTrigger.getStartTime()); assertEquals(trigger.getCronExpression(), cronTrigger.getCronExpression()); assertEquals(trigger.getTimeZone(), cronTrigger.getTimeZone()); } }