package org.atlasapi.messaging.v3; import com.metabroadcast.common.time.DateTimeZones; import com.metabroadcast.common.time.Timestamp; import com.google.common.base.Charsets; import org.joda.time.DateTime; import org.junit.Before; import org.junit.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; public class ScheduleUpdateMessageTest { private JacksonMessageSerializer<ScheduleUpdateMessage> serializer; @Before public void setUp() throws Exception { serializer = JacksonMessageSerializer.forType(ScheduleUpdateMessage.class); } @Test public void deserializeInvertsSerialize() throws Exception { ScheduleUpdateMessage msg = new ScheduleUpdateMessage("mid", Timestamp.of(1L), "bbc.co.uk", "hkqs", new DateTime(0, DateTimeZones.UTC), new DateTime(86400, DateTimeZones.UTC)); byte[] serialized = serializer.serialize(msg); ScheduleUpdateMessage deserialized = serializer.deserialize(serialized); assertEquals(msg.getMessageId(), deserialized.getMessageId()); assertEquals(msg.getTimestamp(), deserialized.getTimestamp()); assertEquals(msg.getSource(), deserialized.getSource()); assertEquals(msg.getChannel(), deserialized.getChannel()); assertEquals(msg.getUpdateStart(), deserialized.getUpdateStart()); assertEquals(msg.getUpdateEnd(), deserialized.getUpdateEnd()); } @Test public void deserializesObjectLongTimestamp() throws Exception { ScheduleUpdateMessage deserialized = serializer.deserialize( ("{" + "\"@class\":\"org.atlasapi.messaging.v3.ScheduleUpdateMessage\"," + "\"messageId\":\"70281e3e-c71c-4bbb-810d-81f31592bf2f\"," + "\"timestamp\":{" + "\"@class\":\"com.metabroadcast.common.time.Timestamp\"," + "\"millis\":[\"java.lang.Long\", 1467677805408]" + "}," + "\"source\":\"ebs.sport.bt.com\"," + "\"channel\":\"hn4x\"," + "\"updateStart\":[" + "\"org.joda.time.DateTime\"," + "1468260900000" + "]," + "\"updateEnd\":[" + "\"org.joda.time.DateTime\"," + "1468262700000" + "]" + "}").getBytes(Charsets.UTF_8)); assertThat(deserialized.getChannel(), is("hn4x")); } @Test public void deserializesPrimitiveLongTimestamp() throws Exception { ScheduleUpdateMessage deserialized = serializer.deserialize( ("{" + "\"@class\":\"org.atlasapi.messaging.v3.ScheduleUpdateMessage\"," + "\"messageId\":\"70281e3e-c71c-4bbb-810d-81f31592bf2f\"," + "\"timestamp\":{" + "\"@class\":\"com.metabroadcast.common.time.Timestamp\"," + "\"millis\":1467677805408" + "}," + "\"source\":\"ebs.sport.bt.com\"," + "\"channel\":\"hn4x\"," + "\"updateStart\":[" + "\"org.joda.time.DateTime\"," + "1468260900000" + "]," + "\"updateEnd\":[" + "\"org.joda.time.DateTime\"," + "1468262700000" + "]" + "}").getBytes(Charsets.UTF_8)); assertThat(deserialized.getChannel(), is("hn4x")); } }