bug5347: added failing test and fix for serialization/deserialization of null implied wind source

This commit is contained in:
Axel Uhl
2020-08-16 00:33:17 +02:00
parent 4209e4be3b
commit 7b7e7820ef
7 changed files with 92 additions and 33 deletions
@@ -0,0 +1,51 @@
package com.sap.sailing.server.gateway.serialization.test.racelog;
import static org.junit.Assert.assertNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.json.simple.JSONObject;
import org.junit.Test;
import com.sap.sailing.domain.abstractlog.orc.RaceLogORCImpliedWindSourceEvent;
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogORCImpliedWindSourceEventDeserializer;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
import com.sap.sailing.server.gateway.serialization.racelog.impl.ImpliedWindSourceSerializer;
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogORCImpliedWindSourceEventSerializer;
import com.sap.sse.common.TimePoint;
public class ORCSetImpliedWindSourceEventSerializerTest extends AbstractEventSerializerTest<RaceLogORCImpliedWindSourceEvent> {
private final long expectedStartTimeTimestamp = 2013;
@Override
protected RaceLogORCImpliedWindSourceEvent createMockEvent() {
TimePoint startTime = mock(TimePoint.class);
when(startTime.asMillis()).thenReturn(expectedStartTimeTimestamp);
RaceLogORCImpliedWindSourceEvent event = mock(RaceLogORCImpliedWindSourceEvent.class);
when(event.getImpliedWindSource()).thenReturn(null);
return event;
}
@Override
protected JsonSerializer<RaceLogEvent> createSerializer(JsonSerializer<Competitor> competitorSerializer) {
return new RaceLogORCImpliedWindSourceEventSerializer(competitorSerializer);
}
@Test
public void testNullImpliedWindSourceAttribute() {
final JSONObject json = serializer.serialize(event);
assertNull(((JSONObject) json.get(RaceLogORCImpliedWindSourceEventSerializer.ORC_IMPLIED_WIND_SOURCE))
.get(ImpliedWindSourceSerializer.ORC_IMPLIED_WIND_SOURCE_TYPE));
}
@Test
public void testNullImpliedWindSourceDeserialization() throws JsonDeserializationException {
final JSONObject json = serializer.serialize(event);
final RaceLogEvent result = new RaceLogORCImpliedWindSourceEventDeserializer(null).deserialize(json);
assertNull(((RaceLogORCImpliedWindSourceEvent) result).getImpliedWindSource());
}
}
@@ -10,6 +10,7 @@ import org.junit.Test;
import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl;
import com.sap.sailing.domain.abstractlog.orc.impl.RaceLogORCImpliedWindSourceEventImpl;
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
import com.sap.sailing.domain.abstractlog.race.impl.RaceLogCourseDesignChangedEventImpl;
import com.sap.sailing.domain.abstractlog.race.impl.RaceLogFinishPositioningConfirmedEventImpl;
@@ -149,6 +150,13 @@ public class RaceLogEventSerializerTest {
serializer.serialize(event);
verify(raceStatusSerializer).serialize(event);
}
@Test
public void testNullImpliedWindSourceSerializer() {
RaceLogEvent event = new RaceLogORCImpliedWindSourceEventImpl(null, null, author, null, 0, null);
serializer.serialize(event);
verify(orcSetImpliedWindEventSerializer).serialize(event);
}
@Test
public void testChoosesPassChangedSerializer() {
@@ -9,7 +9,6 @@ import com.sap.sailing.server.gateway.serialization.JsonSerializer;
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogPassChangeEventSerializer;
public class RaceLogPassChangeEventSerializerTest extends AbstractEventSerializerTest<RaceLogPassChangeEvent> {
@Override
protected RaceLogPassChangeEvent createMockEvent() {
RaceLogPassChangeEvent event = mock(RaceLogPassChangeEvent.class);
@@ -20,5 +19,4 @@ public class RaceLogPassChangeEventSerializerTest extends AbstractEventSerialize
protected JsonSerializer<RaceLogEvent> createSerializer(JsonSerializer<Competitor> competitorSerializer) {
return new RaceLogPassChangeEventSerializer(competitorSerializer);
}
}