mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-13 14:12:11 +00:00
Bug5085: add selenium test for leaderboard starttime API
This commit is contained in:
1 parent
c5b3211fb3
commit
177bd00546
2 files changed
+76
No files matched your search
+58
@@ -1,5 +1,6 @@
|
||||
package com.sap.sailing.selenium.api.event;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.util.UUID;
|
||||
@@ -8,6 +9,7 @@ import java.util.logging.Logger;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.selenium.api.core.ApiContext;
|
||||
import com.sap.sailing.selenium.api.core.JsonWrapper;
|
||||
|
||||
@@ -28,6 +30,14 @@ public class LeaderboardApi {
|
||||
private static final String START_TRACKING_URL = LEADERBOARDS_V1_RESOURCE_URL + "/{leaderboardname}/starttracking";
|
||||
private static final String GET_MARK_URL = LEADERBOARDS_V1_RESOURCE_URL
|
||||
+ "/{leaderboardname}/marks/";
|
||||
private static final String START_TIME_URL = LEADERBOARDS_V1_RESOURCE_URL + "/{leaderboardname}/starttime";
|
||||
private static final String PARAM_RACE_COLUMN_NAME = "race_column";
|
||||
private static final String PARAM_RACE_FLEET_NAME = "fleet";
|
||||
private static final String PARAM_FIELD_AUTHOR_NAME = "authorName";
|
||||
private static final String PARAM_FIELD_AUTHOR_PRIORITY = "authorPriority";
|
||||
private static final String PARAM_START_TIME = "startTime";
|
||||
private static final String PARAM_START_PROCEDURE_TYPE = "startProcedureType";
|
||||
private static final String PARAM_PASS_ID = "passId";
|
||||
|
||||
public JSONArray getLeaderboards(ApiContext ctx) {
|
||||
return ctx.get(LEADERBOARDS_LIST_URL);
|
||||
@@ -61,6 +71,30 @@ public class LeaderboardApi {
|
||||
return ctx.post(toUrl(START_TRACKING_URL, leaderboardName), queryParams);
|
||||
}
|
||||
|
||||
public StartTime getStartTime(final ApiContext ctx, final String leaderboardName, final String raceColumnName,
|
||||
final String fleetName) {
|
||||
final Map<String, String> queryParams = new TreeMap<>();
|
||||
queryParams.put(PARAM_RACE_COLUMN_NAME, raceColumnName);
|
||||
queryParams.put(PARAM_RACE_FLEET_NAME, fleetName);
|
||||
return new StartTime(ctx.get(toUrl(START_TIME_URL, leaderboardName), queryParams));
|
||||
}
|
||||
|
||||
public Long setStartTime(final ApiContext ctx, final String leaderboardName, final String raceColumnName,
|
||||
final String fleetName, final Long startTime, final Integer passId,
|
||||
final RacingProcedureType startProcedureType, final String authorName, final Integer authorPriortity) {
|
||||
final Map<String, String> queryParams = new TreeMap<>();
|
||||
queryParams.put(PARAM_RACE_COLUMN_NAME, raceColumnName);
|
||||
queryParams.put(PARAM_RACE_FLEET_NAME, fleetName);
|
||||
queryParams.put(PARAM_FIELD_AUTHOR_NAME, authorName);
|
||||
queryParams.put(PARAM_FIELD_AUTHOR_PRIORITY, authorPriortity != null ? authorPriortity.toString() : null);
|
||||
queryParams.put(PARAM_START_TIME, startTime != null ? startTime.toString() : null);
|
||||
queryParams.put(PARAM_START_PROCEDURE_TYPE, startProcedureType != null ? startProcedureType.name() : null);
|
||||
queryParams.put(PARAM_PASS_ID, passId != null ? passId.toString() : null);
|
||||
final JSONObject result = ctx.put(toUrl(START_TIME_URL, leaderboardName), queryParams,
|
||||
new HashMap<String, String>());
|
||||
return (Long) result.get("startTimeAsMillis");
|
||||
}
|
||||
|
||||
private String toUrl(final String urlTemplate, final String leaderboardName) {
|
||||
return urlTemplate.replace("{leaderboardname}", leaderboardName);
|
||||
}
|
||||
@@ -138,4 +172,28 @@ public class LeaderboardApi {
|
||||
}
|
||||
}
|
||||
|
||||
public class StartTime extends JsonWrapper {
|
||||
|
||||
private static final String START_TIME_AS_MILLIS = "startTimeAsMillis";
|
||||
private static final String PASS_ID = "passId";
|
||||
private static final String RACING_PROCEDURE_TYPE = "racingProcedureType";
|
||||
|
||||
private StartTime(final JSONObject json) {
|
||||
super(json);
|
||||
}
|
||||
|
||||
public Long getStartTimeAsMillis() {
|
||||
return get(START_TIME_AS_MILLIS);
|
||||
}
|
||||
|
||||
public Integer getPassId() {
|
||||
Long passID = (Long) get(PASS_ID);
|
||||
return passID != null ? passID.intValue() : null;
|
||||
}
|
||||
|
||||
public RacingProcedureType getRacingProcedureType() {
|
||||
return RacingProcedureType.valueOf(get(RACING_PROCEDURE_TYPE));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+18
@@ -14,10 +14,12 @@ import org.json.simple.JSONObject;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.selenium.api.core.ApiContext;
|
||||
import com.sap.sailing.selenium.api.event.EventApi;
|
||||
import com.sap.sailing.selenium.api.event.LeaderboardApi;
|
||||
import com.sap.sailing.selenium.api.event.LeaderboardApi.DeviceMappingRequest;
|
||||
import com.sap.sailing.selenium.api.event.LeaderboardApi.StartTime;
|
||||
import com.sap.sailing.selenium.api.event.LeaderboardApi.TrackingTimes;
|
||||
import com.sap.sailing.selenium.api.regatta.Competitor;
|
||||
import com.sap.sailing.selenium.api.regatta.RaceColumn;
|
||||
@@ -89,4 +91,20 @@ public class LeaderboardApiTest extends AbstractSeleniumTest {
|
||||
assertEquals("read: startTime is different", startTime, trackingTimes.getStartOfTracking());
|
||||
assertEquals("read: endTime is different", endTime, trackingTimes.getEndOfTracking());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRaceStartTime() throws Exception {
|
||||
final ApiContext ctx = createAdminApiContext(getContextRoot(), SERVER_CONTEXT);
|
||||
eventApi.createEvent(ctx, LEADERBOARD_NAME, BOATCLASSNAME, CLOSED, "default");
|
||||
final Integer passID = 1;
|
||||
final RaceColumn race = regattaApi.addRaceColumn(ctx, LEADERBOARD_NAME, null, 1)[0];
|
||||
final Long startTime = currentTimeMillis();
|
||||
Long effectiveStartTime = leaderboardApi.setStartTime(ctx, LEADERBOARD_NAME, race.getRaceName(), "Default", startTime, 1,
|
||||
RacingProcedureType.BASIC, "Administrator", passID);
|
||||
assertNotNull(effectiveStartTime);
|
||||
StartTime reloadedStartTime = leaderboardApi.getStartTime(ctx, LEADERBOARD_NAME, race.getRaceName(), "Default");
|
||||
assertEquals(reloadedStartTime.getStartTimeAsMillis(), effectiveStartTime);
|
||||
assertEquals(reloadedStartTime.getPassId(), passID);
|
||||
assertEquals(reloadedStartTime.getRacingProcedureType(), RacingProcedureType.BASIC);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user