bug4942 Extracted JSON wrapper class for GPS fixes

This commit is contained in:
Benjamin Barth committed 2019-04-23 12:30:33 +02:00
1 parent 99458d6ee9
commit b157e31de2
5 files changed
+73 -51

No files matched your search

@@ -0,0 +1,34 @@
package com.sap.sailing.selenium.api.core;
import org.json.simple.JSONObject;
public class GpsFix extends JsonWrapper {
private static final String ATTRIBUTE_LONGITUDE = "longitude";
private static final String ATTRIBUTE_LATITUDE = "latitude";
private static final String ATTRIBUTE_TIMESTAMP = "timestamp";
public static GpsFix createFix(final Double longitude, final Double latitude, final Long timestamp) {
return new GpsFix(longitude, latitude, timestamp);
}
GpsFix(final Double longitude, final Double latitude, final Long timestamp) {
super(new JSONObject());
getJson().put(ATTRIBUTE_LONGITUDE, longitude);
getJson().put(ATTRIBUTE_LATITUDE, latitude);
getJson().put(ATTRIBUTE_TIMESTAMP, timestamp);
}
public final Double getLongitude() {
return get(ATTRIBUTE_LONGITUDE);
}
public final Double getLatitude() {
return get(ATTRIBUTE_LATITUDE);
}
public final Long getTimestamp() {
return get(ATTRIBUTE_TIMESTAMP);
}
}
@@ -0,0 +1,28 @@
package com.sap.sailing.selenium.api.core;
public class GpsFixMoving extends GpsFix {
private static final String ATTRIBUTE_SPEED = "speed";
private static final String ATTRIBUTE_COURSE = "course";
public static GpsFixMoving createFix(final Double longitude, final Double latitude, final Long timestamp,
final Double speed, final Double course) {
return new GpsFixMoving(longitude, latitude, timestamp, speed, course);
}
GpsFixMoving(final Double longitude, final Double latitude, final Long timestamp, final Double speed,
final Double course) {
super(longitude, latitude, timestamp);
getJson().put(ATTRIBUTE_SPEED, speed);
getJson().put(ATTRIBUTE_COURSE, course);
}
public final Double getSpeed() {
return get(ATTRIBUTE_SPEED);
}
public final Double getCourse() {
return get(ATTRIBUTE_COURSE);
}
}
@@ -6,19 +6,19 @@ import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import com.sap.sailing.selenium.api.core.ApiContext;
import com.sap.sailing.selenium.api.core.GpsFix;
import com.sap.sailing.selenium.api.core.JsonWrapper;
public class GpsFixApi {
private static final String POST_FIX_URL = "/api/v1/gps_fixes";
public GpsFixResponse postGpsFix(ApiContext ctx, UUID deviceUuid, GpsFix... fixes) {
JSONObject gpsFix = new JSONObject();
public GpsFixResponse postGpsFix(final ApiContext ctx, final UUID deviceUuid, final GpsFix... fixes) {
final JSONObject gpsFix = new JSONObject();
gpsFix.put("deviceUuid", deviceUuid != null ? deviceUuid.toString(): null);
JSONArray fixesArray = new JSONArray();
final JSONArray fixesArray = new JSONArray();
gpsFix.put("fixes", fixesArray);
GpsFixResponse gpsFixResponse = new GpsFixResponse(ctx.post(POST_FIX_URL, null, gpsFix));
return gpsFixResponse;
return new GpsFixResponse(ctx.post(POST_FIX_URL, null, gpsFix));
}
public class GpsFixResponse extends JsonWrapper {
@@ -32,48 +32,6 @@ public class GpsFixApi {
}
}
public static JSONObject createGpsFixJson(Double longitude, Double latitude, Long timestamp, Double speed,
Double course) {
final JSONObject json = new JSONObject();
json.put("longitude", longitude);
json.put("latitude", latitude);
json.put("timestamp", timestamp);
json.put("speed", speed);
json.put("course", course);
return json;
}
public class GpsFix extends JsonWrapper {
public GpsFix(JSONObject json) {
super(json);
}
public GpsFix(Double longitude, Double latitude, Long timeMillis, Double speed, Double course) {
super(createGpsFixJson(longitude, latitude, timeMillis, speed, course));
}
public Double getLongitude() {
return get("longitude");
}
public Double getLatitude() {
return get("latitude");
}
public Long getTimestamp() {
return get("timestamp");
}
public Double getSpeed() {
return get("speed");
}
public Double getCourse() {
return get("course");
}
}
public class ManeuverChanged extends JsonWrapper {
public ManeuverChanged(JSONObject json) {
@@ -2,6 +2,7 @@ package com.sap.sailing.selenium.api.test;
import static com.sap.sailing.selenium.api.core.ApiContext.SERVER_CONTEXT;
import static com.sap.sailing.selenium.api.core.ApiContext.createApiContext;
import static com.sap.sailing.selenium.api.core.GpsFixMoving.createFix;
import static org.junit.Assert.assertTrue;
import java.util.UUID;
@@ -10,8 +11,8 @@ import org.junit.Before;
import org.junit.Test;
import com.sap.sailing.selenium.api.core.ApiContext;
import com.sap.sailing.selenium.api.core.GpsFixMoving;
import com.sap.sailing.selenium.api.event.GpsFixApi;
import com.sap.sailing.selenium.api.event.GpsFixApi.GpsFix;
import com.sap.sailing.selenium.api.event.GpsFixApi.GpsFixResponse;
import com.sap.sailing.selenium.test.AbstractSeleniumTest;
@@ -34,7 +35,7 @@ public class GpsFixApiTest extends AbstractSeleniumTest {
@Test
public void testGpsFix() {
final ApiContext ctx = createApiContext(getContextRoot(), SERVER_CONTEXT, "admin", "admin");
final GpsFix gpsFix = gpsFixApi.new GpsFix(49.12, 8.599, System.currentTimeMillis(), 10.0, 180.0);
final GpsFixMoving gpsFix = createFix(49.12, 8.599, System.currentTimeMillis(), 10.0, 180.0);
final GpsFixResponse gpsFixResponse = gpsFixApi.postGpsFix(ctx, UUID.randomUUID(), gpsFix);
assertTrue("Result should be empty.", gpsFixResponse.isEmpty());
}
@@ -5,6 +5,7 @@ import static com.sap.sailing.selenium.api.core.ApiContext.SECURITY_CONTEXT;
import static com.sap.sailing.selenium.api.core.ApiContext.SERVER_CONTEXT;
import static com.sap.sailing.selenium.api.core.ApiContext.createAnonymousApiContext;
import static com.sap.sailing.selenium.api.core.ApiContext.createApiContext;
import static com.sap.sailing.selenium.api.core.GpsFixMoving.createFix;
import static com.sap.sailing.selenium.pages.adminconsole.AdminConsolePage.goToPage;
import static java.lang.System.currentTimeMillis;
import static java.util.UUID.randomUUID;
@@ -80,9 +81,9 @@ public class OpenRegattaTest extends AbstractSeleniumTest {
for (double i = 0.0; i < 100.0; i++) {
final Double longitude = 9.12 + i / 1000.0, latitude = .599 + i / 1000.0, speed = 10.0, course = 180.0;
gpsFixApi.postGpsFix(ownerCtx, deviceUuidCompetitor1,
gpsFixApi.new GpsFix(longitude, latitude, currentTimeMillis(), speed, course));
createFix(longitude, latitude, currentTimeMillis(), speed, course));
gpsFixApi.postGpsFix(sailorCtx, deviceUuidCompetitor2,
gpsFixApi.new GpsFix(longitude, latitude, currentTimeMillis(), speed, course));
createFix(longitude, latitude, currentTimeMillis(), speed, course));
}
leaderboardApi.deviceMappingsEnd(ownerCtx, EVENT_NAME, competitor1.getId(), competitor1.getBoat().getId(),