mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-16 17:21:00 +00:00
More tests. Tests for duplicate object creation will be created soon.
This commit is contained in:
1 parent
3e5b1124bf
commit
8ba81d9cab
2 files changed
+232
-64
No files matched your search
+225
-54
@@ -1,6 +1,8 @@
|
||||
package com.sap.sailing.server.gateway.test.jaxrs;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
@@ -11,92 +13,261 @@ import org.json.simple.JSONValue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.server.gateway.jaxrs.AbstractSailingServerResource;
|
||||
import com.sap.sailing.server.gateway.jaxrs.api.EventsResource;
|
||||
import com.sap.sailing.server.gateway.jaxrs.api.LeaderboardGroupsResource;
|
||||
import com.sap.sailing.server.gateway.jaxrs.api.LeaderboardsResource;
|
||||
import com.sap.sailing.server.gateway.jaxrs.api.RegattasResource;
|
||||
|
||||
public class EventResourceTest extends AbstractJaxRsApiTest
|
||||
|
||||
{
|
||||
private EventsResource eventsResource;
|
||||
private RegattasResource regattasResource;
|
||||
private LeaderboardGroupsResource leaderboardGroupsResource;
|
||||
private LeaderboardsResource leaderboardsResource;
|
||||
private String randomName;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
super.setUp();
|
||||
eventsResource = createResource(new EventsResource());
|
||||
regattasResource = createResource(new RegattasResource());
|
||||
leaderboardGroupsResource = createResource(new LeaderboardGroupsResource());
|
||||
leaderboardsResource = createResource(new LeaderboardsResource());
|
||||
randomName = randomName();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateEvent() throws Exception {
|
||||
EventsResource resource = new EventsResource();
|
||||
EventsResource spyResource = spyResource(resource);
|
||||
String eventName = RandomStringUtils.randomAlphanumeric(6).toUpperCase();
|
||||
|
||||
Response eventResponse = spyResource.createEvent(eventName, eventName, null, null, eventName, null, null, null, null, null, null, null);
|
||||
|
||||
String eventId = (String) eventResponse.getEntity();
|
||||
System.out.println(eventId);
|
||||
|
||||
assert(eventId != null);
|
||||
Response eventResponse = eventsResource.createEvent(randomName, randomName, null, null, randomName, null, null, null, null, null, null, null);
|
||||
assertTrue(isValidEventResponse(eventResponse));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateEventWithLeaderboardGroup() throws Exception {
|
||||
EventsResource resource = new EventsResource();
|
||||
EventsResource spyResource = spyResource(resource);
|
||||
String eventName = RandomStringUtils.randomAlphanumeric(6).toUpperCase();
|
||||
Response eventResponse = eventsResource.createEvent(randomName, randomName, null, null, randomName, null, null, null, null, "true", null, null);
|
||||
assertTrue(isValidEventResponse(eventResponse));
|
||||
|
||||
Response eventResponse = spyResource.createEvent(eventName, eventName, null, null, eventName, null, null, null, null, "true", null, null);
|
||||
JSONObject objEvent = getEvent(getEntityAsString(eventResponse));
|
||||
assertTrue(hasDefaultLeaderboardGroup(objEvent));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateEventWithLeaderboardGroupAndRegatta() throws Exception {
|
||||
|
||||
Response eventResponse = eventsResource.createEvent(randomName, randomName, null, null, randomName, null, null, null, null, "true", "true", "A_CAT");
|
||||
assert(isValidEventResponse(eventResponse));
|
||||
|
||||
String eventId = (String) eventResponse.getEntity();
|
||||
assert(eventId != null);
|
||||
JSONObject objEvent = getEvent(getEntityAsString(eventResponse));
|
||||
assertTrue(hasDefaultLeaderboardGroup(objEvent));
|
||||
|
||||
String jsonString = (String) spyResource.getEvent(eventId).getEntity();
|
||||
JSONObject obj= (JSONObject) JSONValue.parse(jsonString);
|
||||
|
||||
JSONArray lgs = (JSONArray) obj.get("leaderboardGroups");
|
||||
assertTrue(lgs.size() == 1);
|
||||
assertTrue(hasAtLeastOneCourseArea(objEvent));
|
||||
|
||||
JSONObject objRegatta = getRegatta(randomName);
|
||||
String strRegattaName = (String) objRegatta.get("name");
|
||||
String strRegattaCourseAreaId = (String) objRegatta.get("courseAreaId");
|
||||
assertTrue(strRegattaCourseAreaId.equals(getDefaultCourseAreaId(objEvent)));
|
||||
|
||||
leaderBoardWithNameExists(strRegattaName);
|
||||
|
||||
JSONArray leaderboardGroups = getLeaderboardGroups(objEvent);
|
||||
assertTrue(hasDefaultLeaderboardGroup(objEvent));
|
||||
|
||||
JSONObject objDefaultLeaderboardGroup = (JSONObject) leaderboardGroups.get(0);
|
||||
String strDefaultLeaderboardGroupName = (String) objDefaultLeaderboardGroup.get("name");
|
||||
|
||||
JSONObject objLeaderboardGroup = getLeaderboardGroup(strDefaultLeaderboardGroupName);
|
||||
JSONArray leaderboards = (JSONArray) objLeaderboardGroup.get("leaderboards");
|
||||
assertTrue(containsObjectWithAttrbuteNameAndValue(leaderboards, "name", randomName));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testCreateEventAddLeaderboardGroup() throws Exception {
|
||||
String eventName = randomName();
|
||||
|
||||
Response eventResponse = eventsResource.createEvent(eventName, eventName, null, null, eventName, null, null, null, null, null, null, null);
|
||||
String strEventId = getEntityAsString(eventResponse);
|
||||
|
||||
Response addLeaderboardGroupResponse = eventsResource.addLeaderboardGroup(strEventId, eventName, eventName, null, null, null, null, null);
|
||||
String strLeaderboardGroupId = getEntityAsString(addLeaderboardGroupResponse);
|
||||
assertTrue(isValidLeaderboardGroupResponse(addLeaderboardGroupResponse));
|
||||
|
||||
JSONObject objEvent = getEvent(strEventId);
|
||||
JSONObject objLeaderboardGroup = (JSONObject) getLeaderboardGroups(objEvent).get(0);
|
||||
String strEventLeaderboardGroupId = (String) objLeaderboardGroup.get("id");
|
||||
|
||||
assertTrue(strEventLeaderboardGroupId.equals(strLeaderboardGroupId));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateEventWithLeaderboardGroupAndRegatta() throws Exception {
|
||||
EventsResource resource = new EventsResource();
|
||||
EventsResource spyResource = spyResource(resource);
|
||||
String eventName = RandomStringUtils.randomAlphanumeric(6).toUpperCase();
|
||||
public void testCreateEventAddRegatta() throws Exception {
|
||||
String eventName = randomName();
|
||||
|
||||
String eventId = (String) spyResource.createEvent(eventName, eventName, null, null, eventName, null, null, null, null, "true", "true", "A_CAT").getEntity();
|
||||
assert(eventId != null);
|
||||
Response eventResponse = eventsResource.createEvent(eventName, eventName, null, null, eventName, null, null, null, null, null, null, null);
|
||||
assertTrue(isValidEventResponse(eventResponse));
|
||||
|
||||
String jsonEvent = (String) spyResource.getEvent(eventId).getEntity();
|
||||
JSONObject event= (JSONObject) JSONValue.parse(jsonEvent);
|
||||
|
||||
JSONArray lgs = (JSONArray) event.get("leaderboardGroups");
|
||||
assertTrue(lgs.size() == 1);
|
||||
String strEventId = getEntityAsString(eventResponse);
|
||||
Response regattaResponse = eventsResource.addRegatta(eventName, "A_CAT", null, strEventId, null,"true", "LOW_POINT", null, "3.0", "true", "false", "ONE_DESIGN");
|
||||
assertTrue(isValidRegattaResponse(regattaResponse));
|
||||
|
||||
JSONObject venue = (JSONObject) event.get("venue");
|
||||
JSONArray courseAreas = (JSONArray) venue.get("courseAreas");
|
||||
assertTrue(courseAreas.size() == 1);
|
||||
JSONObject regatta = getRegatta(eventName);
|
||||
String strRegattaCourseAreaId = (String) regatta.get("courseAreaId");
|
||||
|
||||
JSONObject courseArea = (JSONObject) courseAreas.get(0);
|
||||
String courseAreaId = (String) courseArea.get("id");
|
||||
System.out.println(courseAreaId);
|
||||
assert(courseAreaId != null);
|
||||
JSONArray arrCourseAreas = getCourseAreasOfEvent(strEventId);
|
||||
assertTrue(arrCourseAreas.size() == 1);
|
||||
|
||||
RegattasResource regattaResource = new RegattasResource();
|
||||
RegattasResource spyRegattaResource = spyResource(regattaResource);
|
||||
JSONObject objCourseArea = (JSONObject) arrCourseAreas.get(0);
|
||||
String strCourseAreaId = (String) objCourseArea.get("id");
|
||||
|
||||
Response regattasResponse = spyRegattaResource.getRegatta(eventName);
|
||||
String jsonRegatta = (String) regattasResponse.getEntity();
|
||||
JSONObject regatta = (JSONObject) JSONValue.parse(jsonRegatta);
|
||||
String regattaName = (String) regatta.get("name");
|
||||
assertTrue(strCourseAreaId.equals(strRegattaCourseAreaId));
|
||||
|
||||
String regattaCourseAreaId = (String) regatta.get("courseAreaId");
|
||||
assertTrue(regattaCourseAreaId.equals(courseAreaId));
|
||||
String strRegattaName = (String) regatta.get("name");
|
||||
assertTrue(leaderBoardWithNameExists(strRegattaName));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateEventWithLeaderboardGroupAddRegatta() throws Exception {
|
||||
String eventName = randomName();
|
||||
|
||||
LeaderboardsResource leaderboardResource = spyResource(new LeaderboardsResource());
|
||||
Response leaderboardResponse = leaderboardResource.getLeaderboard(regattaName, LeaderboardsResource.ResultStates.Final, null);
|
||||
String jsonLeaderboard = (String) leaderboardResponse.getEntity();
|
||||
JSONObject leaderboard = (JSONObject) JSONValue.parse(jsonRegatta);
|
||||
String leaderboardName = (String)leaderboard.get("name");
|
||||
assertTrue(leaderboardName.equals(regattaName));
|
||||
Response eventResponse = eventsResource.createEvent(eventName, eventName, null, null, eventName, null, null, null, null, "true", null, null);
|
||||
assertTrue(isValidEventResponse(eventResponse));
|
||||
|
||||
String strEventId = getEntityAsString(eventResponse);
|
||||
Response regattaResponse = eventsResource.addRegatta(eventName, "A_CAT", null, strEventId, null,"true", "LOW_POINT", null, "3.0", "true", "false", "ONE_DESIGN");
|
||||
assertTrue(isValidRegattaResponse(regattaResponse));
|
||||
|
||||
JSONObject regatta = getRegatta(eventName);
|
||||
String strRegattaCourseAreaId = (String) regatta.get("courseAreaId");
|
||||
|
||||
JSONArray arrCourseAreas = getCourseAreasOfEvent(strEventId);
|
||||
assertTrue(arrCourseAreas.size() == 1);
|
||||
|
||||
JSONObject objCourseArea = (JSONObject) arrCourseAreas.get(0);
|
||||
String strCourseAreaId = (String) objCourseArea.get("id");
|
||||
|
||||
assertTrue(strCourseAreaId.equals(strRegattaCourseAreaId));
|
||||
|
||||
String strRegattaName = (String) regatta.get("name");
|
||||
assertTrue(leaderBoardWithNameExists(strRegattaName));
|
||||
|
||||
JSONObject objLeaderboardGroup = getLeaderboardGroup(eventName);
|
||||
JSONArray arrLeaderboards = (JSONArray) objLeaderboardGroup.get("leaderboards");
|
||||
assertTrue(containsObjectWithAttrbuteNameAndValue(arrLeaderboards, "name", strRegattaName));
|
||||
}
|
||||
|
||||
private boolean hasAtLeastOneCourseArea(JSONObject objEvent) {
|
||||
String strCourseAreaId = getDefaultCourseAreaId(objEvent);
|
||||
return validateUUID(strCourseAreaId);
|
||||
}
|
||||
|
||||
private String getDefaultCourseAreaId(JSONObject objEvent) {
|
||||
JSONArray arrCourseAreas = getCourseAreas(objEvent);
|
||||
assertTrue(arrCourseAreas.size() == 1);
|
||||
|
||||
JSONObject courseArea = (JSONObject) arrCourseAreas.get(0);
|
||||
String strCourseAreaId = (String) courseArea.get("id");
|
||||
return strCourseAreaId;
|
||||
}
|
||||
|
||||
private boolean hasDefaultLeaderboardGroup(JSONObject objEvent) {
|
||||
String eventName = (String) objEvent.get("name");
|
||||
return containsObjectWithAttrbuteNameAndValue(getLeaderboardGroups(objEvent), "name", eventName);
|
||||
}
|
||||
|
||||
private boolean containsObjectWithAttrbuteNameAndValue(JSONArray array, String attributeName, String value){
|
||||
return array.stream().filter(o -> ((JSONObject) o).get(attributeName).equals(value)).findFirst().isPresent();
|
||||
}
|
||||
|
||||
private JSONObject getRegatta(String eventName) {
|
||||
Response regattasResponse = regattasResource.getRegatta(eventName);
|
||||
return toJSONObject(getEntityAsString(regattasResponse));
|
||||
}
|
||||
|
||||
private boolean isValidEventResponse(Response response) {
|
||||
String id = getEntityAsString(response);
|
||||
return validateUUID(id);
|
||||
}
|
||||
|
||||
private boolean isValidLeaderboardGroupResponse(Response response) {
|
||||
String id = getEntityAsString(response);
|
||||
return validateUUID(id);
|
||||
}
|
||||
|
||||
private boolean isValidRegattaResponse(Response response) {
|
||||
String id = getEntityAsString(response);
|
||||
return validateUUID(id);
|
||||
}
|
||||
|
||||
private JSONArray getCourseAreasOfEvent(String strEventId) {
|
||||
JSONObject objEvent = getEvent(strEventId);
|
||||
|
||||
JSONArray arrCourseAreas = getCourseAreas(objEvent);
|
||||
return arrCourseAreas;
|
||||
}
|
||||
|
||||
private JSONObject getEvent(String strEventId) {
|
||||
String jsonEvent = getEventAsString(strEventId);
|
||||
JSONObject objEvent= toJSONObject(jsonEvent);
|
||||
return objEvent;
|
||||
}
|
||||
|
||||
private boolean leaderBoardWithNameExists(String name) {
|
||||
Response leaderboardResponse = leaderboardsResource.getLeaderboard(name, LeaderboardsResource.ResultStates.Final, null);
|
||||
JSONObject objLeaderboard = getEntityAsObject(leaderboardResponse);
|
||||
String strLeaderboardName = (String) objLeaderboard.get("name");
|
||||
return strLeaderboardName.equals(name);
|
||||
}
|
||||
|
||||
|
||||
private JSONObject getEntityAsObject(Response leaderboardGroupsResponse) {
|
||||
String strLeaderboardGroup = getEntityAsString(leaderboardGroupsResponse);
|
||||
JSONObject objLeaderboardGroup = toJSONObject(strLeaderboardGroup);
|
||||
return objLeaderboardGroup;
|
||||
}
|
||||
|
||||
private JSONObject getLeaderboardGroup(String strDefaultLeaderboardGroupName) {
|
||||
Response leaderboardGroupsResponse = leaderboardGroupsResource.getLeaderboardGroup(strDefaultLeaderboardGroupName);
|
||||
return toJSONObject(getEntityAsString(leaderboardGroupsResponse));
|
||||
}
|
||||
|
||||
private JSONArray getLeaderboardGroups(JSONObject objEvent) {
|
||||
JSONArray arrLgs = (JSONArray) objEvent.get("leaderboardGroups");
|
||||
return arrLgs;
|
||||
}
|
||||
|
||||
private JSONArray getCourseAreas(JSONObject objEvent) {
|
||||
JSONObject objVenue = (JSONObject) objEvent.get("venue");
|
||||
JSONArray arrCourseAreas = (JSONArray) objVenue.get("courseAreas");
|
||||
return arrCourseAreas;
|
||||
}
|
||||
|
||||
private JSONObject toJSONObject(String strEvent) {
|
||||
return (JSONObject) JSONValue.parse(strEvent);
|
||||
}
|
||||
|
||||
private boolean validateUUID(String eventId) {
|
||||
return UUID.fromString(eventId) != null;
|
||||
}
|
||||
|
||||
private String randomName() {
|
||||
return RandomStringUtils.randomAlphanumeric(6).toUpperCase();
|
||||
}
|
||||
|
||||
|
||||
private String getEntityAsString(Response eventResponse) {
|
||||
return (String) eventResponse.getEntity();
|
||||
}
|
||||
|
||||
private <T extends AbstractSailingServerResource> T createResource(T resource){
|
||||
return spyResource(resource);
|
||||
}
|
||||
|
||||
|
||||
private String getEventAsString(String eventId) {
|
||||
return getEntityAsString(eventsResource.getEvent(eventId));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+7
-10
@@ -75,9 +75,6 @@ import com.sap.sse.shared.media.VideoDescriptor;
|
||||
|
||||
@Path("/v1/events")
|
||||
public class EventsResource extends AbstractSailingServerResource {
|
||||
|
||||
private static final String DEFAULT_SERIES_NAME = "Default";
|
||||
private static final String DEFAULT_FLEET_NAME = "Default";
|
||||
|
||||
private static final SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy");
|
||||
|
||||
@@ -158,7 +155,6 @@ public class EventsResource extends AbstractSailingServerResource {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
UUID eventId = UUID.randomUUID();
|
||||
|
||||
// ignoring sailorsInfoWebsiteURLs, images, videos
|
||||
@@ -303,13 +299,10 @@ public class EventsResource extends AbstractSailingServerResource {
|
||||
useStartTimeInterference, buoyZoneRadiusInHullLengths, courseAreaId, boatClassName, startDate, endDate,
|
||||
scoringScheme, rankingMetric, regattaId, regattaCreationParametersDTO);
|
||||
|
||||
addLeaderboard(regattaName, new int[0]);
|
||||
|
||||
|
||||
return ok(regatta.getId().toString(), MediaType.TEXT_PLAIN);
|
||||
}
|
||||
|
||||
|
||||
@POST
|
||||
@Path("/addCourseArea")
|
||||
@Consumes("text/plain")
|
||||
@@ -384,7 +377,7 @@ public class EventsResource extends AbstractSailingServerResource {
|
||||
@Path("/addLeaderboardGroup")
|
||||
@Consumes("text/plain")
|
||||
@Produces("text/plain")
|
||||
public Response addLeaderboardGroup(@FormParam("eventId") @NotNull String eventIdParam,
|
||||
public Response addLeaderboardGroup(@FormParam("eventId") String eventIdParam,
|
||||
@FormParam("leaderboardGroupName") String leaderboardGroupName,
|
||||
@FormParam("leaderboardGroupDescription") String leaderboardGroupDescription,
|
||||
@FormParam("leaderboardGroupDisplayName") String leaderboardGroupDisplayName,
|
||||
@@ -433,6 +426,10 @@ public class EventsResource extends AbstractSailingServerResource {
|
||||
|
||||
int[] overallLeaderboardDiscardThresholds = overallLeaderboardDiscardThresholdsParam != null
|
||||
? overallLeaderboardDiscardThresholdsParam.stream().mapToInt(i -> i).toArray() : new int[0];
|
||||
|
||||
if(leaderboardNames == null){
|
||||
leaderboardNames = new ArrayList<String>();
|
||||
}
|
||||
|
||||
LeaderboardGroup leaderboardGroup = addLeaderboardGroup(leaderboardGroupName, leaderboardGroupDescription,
|
||||
leaderboardGroupDisplayName, leaderboardNames, displayGroupsInReverseOrder, event,
|
||||
@@ -569,8 +566,8 @@ public class EventsResource extends AbstractSailingServerResource {
|
||||
|
||||
private LinkedHashMap<String, SeriesCreationParametersDTO> createDefaultSeriesCreationParameters() {
|
||||
final LinkedHashMap<String, SeriesCreationParametersDTO> seriesCreationParameters = new LinkedHashMap<>();
|
||||
seriesCreationParameters.put(DEFAULT_SERIES_NAME, new SeriesCreationParametersDTO(
|
||||
Arrays.asList(new FleetDTO(DEFAULT_FLEET_NAME, 0, null)), false, false, false, false, null, false, null));
|
||||
seriesCreationParameters.put("Default", new SeriesCreationParametersDTO(
|
||||
Arrays.asList(new FleetDTO("Default", 0, null)), false, false, false, false, null, false, null));
|
||||
return seriesCreationParameters;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user