mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-17 01:31:01 +00:00
Merge remote-tracking branch 'origin/master' into foiling
Conflicts: java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java
This commit is contained in:
commit
e1f8dc06d5
166 files changed
+6263
-4576
No files matched your search
+190
-190
@@ -1,190 +1,190 @@
|
||||
package com.sap.sailing.server.impl;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseAreaImpl;
|
||||
import com.sap.sailing.domain.base.impl.FleetImpl;
|
||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
import com.sap.sailing.domain.base.impl.SeriesImpl;
|
||||
import com.sap.sailing.domain.common.BoatClassMasterdata;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
||||
import com.sap.sailing.domain.leaderboard.impl.FlexibleLeaderboardImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.LeaderboardGroupImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
||||
import com.sap.sailing.domain.leaderboard.impl.RegattaLeaderboardImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ThresholdBasedResultDiscardingRuleImpl;
|
||||
import com.sap.sailing.domain.masterdataimport.TopLevelMasterData;
|
||||
import com.sap.sailing.domain.racelog.tracking.GPSFixStore;
|
||||
import com.sap.sailing.domain.ranking.OneDesignRankingMetric;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
public class MediaMasterDataExportTest {
|
||||
|
||||
static final String matchingRegattaName = "Matching Regatta";
|
||||
static final String missingRegattaName = "Missing Regatta";
|
||||
static final String matchingRace1 = "matching race 1";
|
||||
static final String matchingRace2 = "matching race 2";
|
||||
static final String matchingRace3 = "matching race 3";
|
||||
static final String missingRace1 = "missing race 1";
|
||||
static final String missingRace2 = "missing race 2";
|
||||
static final String missingRace3 = "missing race 3";
|
||||
|
||||
static final boolean displayGroupsInReverseOrder = true;
|
||||
static final ThresholdBasedResultDiscardingRule resultDiscardingRule = new ThresholdBasedResultDiscardingRuleImpl(new int[0]);
|
||||
static final BoatClass boatClass = new BoatClassImpl("boat class name", BoatClassMasterdata._12M);
|
||||
static final TimePoint startDate = MillisecondsTimePoint.now();
|
||||
static final TimePoint endDate = startDate.plus(MillisecondsDurationImpl.ONE_DAY);
|
||||
static final boolean isMedal = false;
|
||||
static final Fleet regattaFleet = new FleetImpl("fleet name");
|
||||
static final boolean persistent = false;
|
||||
static final ScoringScheme scoringScheme = new LowPoint();
|
||||
static final CourseArea courseArea = new CourseAreaImpl("Course Area", UUID.randomUUID());
|
||||
static final Serializable regatteId = "regatta id";
|
||||
|
||||
@Test
|
||||
public void testTrackWithAssignedRaceButEmptyLeaderboardGroup() {
|
||||
TimePoint startTime = null;
|
||||
Duration duration = null;
|
||||
MimeType mimeType = MimeType.mp4;
|
||||
Collection<MediaTrack> allMediaTracks = Arrays.asList(
|
||||
new MediaTrack("dbId 1", "title 1 for existing regatta and race", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(matchingRegattaName, matchingRace1))),
|
||||
new MediaTrack("dbId 2", "title 2 for existing one regatta and race and one missing regatta", "url", startTime, duration, mimeType, new HashSet<RegattaAndRaceIdentifier>(Arrays.asList(new RegattaNameAndRaceName(missingRegattaName, matchingRace2), new RegattaNameAndRaceName(matchingRegattaName, matchingRace2)))),
|
||||
new MediaTrack("dbId 3", "title 1 for missing regatta", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(missingRegattaName, matchingRace1))),
|
||||
new MediaTrack("dbId 4", "title 2 for missing regatta", "url", startTime, duration, mimeType, new HashSet<RegattaAndRaceIdentifier>(Arrays.asList(new RegattaNameAndRaceName(missingRegattaName, matchingRace3), new RegattaNameAndRaceName(matchingRegattaName, missingRace1))))
|
||||
);
|
||||
Collection<RaceIdentifier> regattaRaces = Collections.emptyList();
|
||||
Collection<RaceIdentifier> flexibleRaces = Collections.emptyList();
|
||||
TopLevelMasterData topLevelMasterData = createTopLevelMasterData(regattaRaces , flexibleRaces, allMediaTracks);
|
||||
Collection<MediaTrack> filteredMediaTracks = topLevelMasterData.getFilteredMediaTracks();
|
||||
assertEquals(0, filteredMediaTracks.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTracksWithAssignedRaceAndMatchingRegattaInLeaderboardGroup() {
|
||||
TimePoint startTime = null;
|
||||
Duration duration = null;
|
||||
MimeType mimeType = MimeType.mp4;
|
||||
Collection<MediaTrack> allMediaTracks = Arrays.asList(
|
||||
new MediaTrack("dbId 1", "title 1 for existing regatta and race", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(matchingRegattaName, matchingRace1))),
|
||||
new MediaTrack("dbId 2", "title 2 for existing one regatta and race and one missing regatta", "url", startTime, duration, mimeType, new HashSet<RegattaAndRaceIdentifier>(Arrays.asList(new RegattaNameAndRaceName(missingRegattaName, matchingRace2), new RegattaNameAndRaceName(matchingRegattaName, matchingRace2)))),
|
||||
new MediaTrack("dbId 3", "title 3 for missing regatta", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(missingRegattaName, matchingRace1))),
|
||||
new MediaTrack("dbId 4", "title 4 for missing regatta", "url", startTime, duration, mimeType, new HashSet<RegattaAndRaceIdentifier>(Arrays.asList(new RegattaNameAndRaceName(missingRegattaName, matchingRace3), new RegattaNameAndRaceName(matchingRegattaName, missingRace1)))),
|
||||
new MediaTrack("dbId 5", "title 5 for existing regatta and race", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(matchingRegattaName, matchingRace1)))
|
||||
);
|
||||
Collection<RaceIdentifier> regattaRaces = Arrays.asList(
|
||||
new RegattaNameAndRaceName(matchingRegattaName, matchingRace1),
|
||||
new RegattaNameAndRaceName(matchingRegattaName, matchingRace2),
|
||||
new RegattaNameAndRaceName(matchingRegattaName, matchingRace3)
|
||||
);
|
||||
Collection<RaceIdentifier> flexibleRaces = Collections.emptyList();
|
||||
TopLevelMasterData topLevelMasterData = createTopLevelMasterData(regattaRaces , flexibleRaces, allMediaTracks);
|
||||
Collection<MediaTrack> filteredMediaTracks = topLevelMasterData.getFilteredMediaTracks();
|
||||
assertEquals(3, filteredMediaTracks.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTrackWithAssignedRaceAndMatchingFlexibleLeaderboardInLeaderboardGroup() {
|
||||
TimePoint startTime = null;
|
||||
Duration duration = null;
|
||||
MimeType mimeType = MimeType.mp4;
|
||||
Collection<MediaTrack> allMediaTracks = Arrays.asList(
|
||||
new MediaTrack("dbId 1", "title 1 for existing regatta and race", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(matchingRegattaName, matchingRace1))),
|
||||
new MediaTrack("dbId 2", "title 2 for existing one regatta and race and one missing regatta", "url", startTime, duration, mimeType, new HashSet<RegattaAndRaceIdentifier>(Arrays.asList(new RegattaNameAndRaceName(missingRegattaName, matchingRace2), new RegattaNameAndRaceName(matchingRegattaName, matchingRace2)))),
|
||||
new MediaTrack("dbId 3", "title 3 for missing regatta", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(missingRegattaName, matchingRace1))),
|
||||
new MediaTrack("dbId 4", "title 4 for missing regatta", "url", startTime, duration, mimeType, new HashSet<RegattaAndRaceIdentifier>(Arrays.asList(new RegattaNameAndRaceName(missingRegattaName, matchingRace3), new RegattaNameAndRaceName(matchingRegattaName, missingRace1)))),
|
||||
new MediaTrack("dbId 5", "title 5 for existing regatta and race", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(matchingRegattaName, matchingRace1)))
|
||||
);
|
||||
Collection<RaceIdentifier> regattaRaces = Collections.emptyList();
|
||||
Collection<RaceIdentifier> flexibleRaces = Arrays.asList(
|
||||
new RegattaNameAndRaceName(matchingRegattaName, matchingRace1),
|
||||
new RegattaNameAndRaceName(matchingRegattaName, matchingRace2),
|
||||
new RegattaNameAndRaceName(matchingRegattaName, matchingRace3)
|
||||
);
|
||||
TopLevelMasterData topLevelMasterData = createTopLevelMasterData(regattaRaces , flexibleRaces, allMediaTracks);
|
||||
Collection<MediaTrack> filteredMediaTracks = topLevelMasterData.getFilteredMediaTracks();
|
||||
assertEquals(3, filteredMediaTracks.size());
|
||||
}
|
||||
|
||||
private TopLevelMasterData createTopLevelMasterData(Collection<RaceIdentifier> regattaRaces, Collection<RaceIdentifier> flexibleRaces, Collection<MediaTrack> allMediaTracks) {
|
||||
Set<String> raceColumnNames = new HashSet<>();
|
||||
for (RaceIdentifier regattaAndRaceIdentifier : regattaRaces) {
|
||||
raceColumnNames.add(regattaAndRaceIdentifier.getRaceName());
|
||||
}
|
||||
Regatta regatta = createTestRegatta("regatta name", raceColumnNames);
|
||||
RegattaLeaderboard regattaLeaderboard = new RegattaLeaderboardImpl(regatta, resultDiscardingRule);
|
||||
assignRacesToRegattaLeaderboardColumns(regattaLeaderboard, regattaRaces);
|
||||
|
||||
FlexibleLeaderboard flexibleLeaderboard = new FlexibleLeaderboardImpl("flexible leaderboard", resultDiscardingRule, scoringScheme , courseArea);
|
||||
for (RaceIdentifier regattaAndRaceIdentifier : flexibleRaces) {
|
||||
RaceColumn raceColumn = flexibleLeaderboard.addRaceColumn(regattaAndRaceIdentifier.getRaceName(), isMedal);
|
||||
Fleet defaultFleet = raceColumn.getFleets().iterator().next();
|
||||
raceColumn.setRaceIdentifier(defaultFleet, regattaAndRaceIdentifier);
|
||||
}
|
||||
|
||||
|
||||
List<? extends Leaderboard> leaderboards = Arrays.asList(regattaLeaderboard, flexibleLeaderboard);
|
||||
LeaderboardGroup leaderboardGroup = new LeaderboardGroupImpl("name", "description", "displayName", displayGroupsInReverseOrder , leaderboards);
|
||||
Set<LeaderboardGroup> groupsToExport = Collections.singleton(leaderboardGroup);
|
||||
Iterable<Event> allEvents = Collections.emptyList();
|
||||
Map<String, Regatta> regattaForRaceIdString = Collections.emptyMap();
|
||||
GPSFixStore gpsFixStore = mock(GPSFixStore.class);
|
||||
boolean exportWind = false;
|
||||
TopLevelMasterData topLevelMasterData = new TopLevelMasterData(groupsToExport , allEvents , regattaForRaceIdString, allMediaTracks , gpsFixStore , exportWind, new HashMap<>());
|
||||
return topLevelMasterData;
|
||||
}
|
||||
|
||||
public static void assignRacesToRegattaLeaderboardColumns(RegattaLeaderboard leaderboard, Collection<RaceIdentifier> raceIdentifiers) {
|
||||
Iterator<RaceIdentifier> regattaRacesIterator = raceIdentifiers.iterator();
|
||||
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
||||
raceColumn.setRaceIdentifier(regattaFleet, regattaRacesIterator.next());
|
||||
}
|
||||
}
|
||||
|
||||
public static RegattaImpl createTestRegatta(String regattaName, Iterable<String> raceColumnNames) {
|
||||
Iterable<? extends Fleet> regattaFleets = Collections.singleton(regattaFleet);
|
||||
TrackedRegattaRegistry trackedRegattaRegistry = mock(TrackedRegattaRegistry.class);
|
||||
Series series = new SeriesImpl("series name", isMedal, regattaFleets, raceColumnNames, trackedRegattaRegistry);
|
||||
Iterable<? extends Series> regattaSeries = Collections.singleton(series);
|
||||
return new RegattaImpl(regattaName, boatClass, startDate, endDate, regattaSeries, persistent, scoringScheme, regatteId , courseArea, OneDesignRankingMetric::new);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
package com.sap.sailing.server.impl;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseAreaImpl;
|
||||
import com.sap.sailing.domain.base.impl.FleetImpl;
|
||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
import com.sap.sailing.domain.base.impl.SeriesImpl;
|
||||
import com.sap.sailing.domain.common.BoatClassMasterdata;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
||||
import com.sap.sailing.domain.leaderboard.impl.FlexibleLeaderboardImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.LeaderboardGroupImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
||||
import com.sap.sailing.domain.leaderboard.impl.RegattaLeaderboardImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ThresholdBasedResultDiscardingRuleImpl;
|
||||
import com.sap.sailing.domain.masterdataimport.TopLevelMasterData;
|
||||
import com.sap.sailing.domain.racelog.tracking.GPSFixStore;
|
||||
import com.sap.sailing.domain.ranking.OneDesignRankingMetric;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
public class MediaMasterDataExportTest {
|
||||
|
||||
static final String matchingRegattaName = "Matching Regatta";
|
||||
static final String missingRegattaName = "Missing Regatta";
|
||||
static final String matchingRace1 = "matching race 1";
|
||||
static final String matchingRace2 = "matching race 2";
|
||||
static final String matchingRace3 = "matching race 3";
|
||||
static final String missingRace1 = "missing race 1";
|
||||
static final String missingRace2 = "missing race 2";
|
||||
static final String missingRace3 = "missing race 3";
|
||||
|
||||
static final boolean displayGroupsInReverseOrder = true;
|
||||
static final ThresholdBasedResultDiscardingRule resultDiscardingRule = new ThresholdBasedResultDiscardingRuleImpl(new int[0]);
|
||||
static final BoatClass boatClass = new BoatClassImpl("boat class name", BoatClassMasterdata._12M);
|
||||
static final TimePoint startDate = MillisecondsTimePoint.now();
|
||||
static final TimePoint endDate = startDate.plus(MillisecondsDurationImpl.ONE_DAY);
|
||||
static final boolean isMedal = false;
|
||||
static final Fleet regattaFleet = new FleetImpl("fleet name");
|
||||
static final boolean persistent = false;
|
||||
static final ScoringScheme scoringScheme = new LowPoint();
|
||||
static final CourseArea courseArea = new CourseAreaImpl("Course Area", UUID.randomUUID());
|
||||
static final Serializable regatteId = "regatta id";
|
||||
|
||||
@Test
|
||||
public void testTrackWithAssignedRaceButEmptyLeaderboardGroup() {
|
||||
TimePoint startTime = null;
|
||||
Duration duration = null;
|
||||
MimeType mimeType = MimeType.mp4;
|
||||
Collection<MediaTrack> allMediaTracks = Arrays.asList(
|
||||
new MediaTrack("dbId 1", "title 1 for existing regatta and race", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(matchingRegattaName, matchingRace1))),
|
||||
new MediaTrack("dbId 2", "title 2 for existing one regatta and race and one missing regatta", "url", startTime, duration, mimeType, new HashSet<RegattaAndRaceIdentifier>(Arrays.asList(new RegattaNameAndRaceName(missingRegattaName, matchingRace2), new RegattaNameAndRaceName(matchingRegattaName, matchingRace2)))),
|
||||
new MediaTrack("dbId 3", "title 1 for missing regatta", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(missingRegattaName, matchingRace1))),
|
||||
new MediaTrack("dbId 4", "title 2 for missing regatta", "url", startTime, duration, mimeType, new HashSet<RegattaAndRaceIdentifier>(Arrays.asList(new RegattaNameAndRaceName(missingRegattaName, matchingRace3), new RegattaNameAndRaceName(matchingRegattaName, missingRace1))))
|
||||
);
|
||||
Collection<RaceIdentifier> regattaRaces = Collections.emptyList();
|
||||
Collection<RaceIdentifier> flexibleRaces = Collections.emptyList();
|
||||
TopLevelMasterData topLevelMasterData = createTopLevelMasterData(regattaRaces , flexibleRaces, allMediaTracks);
|
||||
Collection<MediaTrack> filteredMediaTracks = topLevelMasterData.getFilteredMediaTracks();
|
||||
assertEquals(0, filteredMediaTracks.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTracksWithAssignedRaceAndMatchingRegattaInLeaderboardGroup() {
|
||||
TimePoint startTime = null;
|
||||
Duration duration = null;
|
||||
MimeType mimeType = MimeType.mp4;
|
||||
Collection<MediaTrack> allMediaTracks = Arrays.asList(
|
||||
new MediaTrack("dbId 1", "title 1 for existing regatta and race", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(matchingRegattaName, matchingRace1))),
|
||||
new MediaTrack("dbId 2", "title 2 for existing one regatta and race and one missing regatta", "url", startTime, duration, mimeType, new HashSet<RegattaAndRaceIdentifier>(Arrays.asList(new RegattaNameAndRaceName(missingRegattaName, matchingRace2), new RegattaNameAndRaceName(matchingRegattaName, matchingRace2)))),
|
||||
new MediaTrack("dbId 3", "title 3 for missing regatta", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(missingRegattaName, matchingRace1))),
|
||||
new MediaTrack("dbId 4", "title 4 for missing regatta", "url", startTime, duration, mimeType, new HashSet<RegattaAndRaceIdentifier>(Arrays.asList(new RegattaNameAndRaceName(missingRegattaName, matchingRace3), new RegattaNameAndRaceName(matchingRegattaName, missingRace1)))),
|
||||
new MediaTrack("dbId 5", "title 5 for existing regatta and race", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(matchingRegattaName, matchingRace1)))
|
||||
);
|
||||
Collection<RaceIdentifier> regattaRaces = Arrays.asList(
|
||||
new RegattaNameAndRaceName(matchingRegattaName, matchingRace1),
|
||||
new RegattaNameAndRaceName(matchingRegattaName, matchingRace2),
|
||||
new RegattaNameAndRaceName(matchingRegattaName, matchingRace3)
|
||||
);
|
||||
Collection<RaceIdentifier> flexibleRaces = Collections.emptyList();
|
||||
TopLevelMasterData topLevelMasterData = createTopLevelMasterData(regattaRaces , flexibleRaces, allMediaTracks);
|
||||
Collection<MediaTrack> filteredMediaTracks = topLevelMasterData.getFilteredMediaTracks();
|
||||
assertEquals(3, filteredMediaTracks.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTrackWithAssignedRaceAndMatchingFlexibleLeaderboardInLeaderboardGroup() {
|
||||
TimePoint startTime = null;
|
||||
Duration duration = null;
|
||||
MimeType mimeType = MimeType.mp4;
|
||||
Collection<MediaTrack> allMediaTracks = Arrays.asList(
|
||||
new MediaTrack("dbId 1", "title 1 for existing regatta and race", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(matchingRegattaName, matchingRace1))),
|
||||
new MediaTrack("dbId 2", "title 2 for existing one regatta and race and one missing regatta", "url", startTime, duration, mimeType, new HashSet<RegattaAndRaceIdentifier>(Arrays.asList(new RegattaNameAndRaceName(missingRegattaName, matchingRace2), new RegattaNameAndRaceName(matchingRegattaName, matchingRace2)))),
|
||||
new MediaTrack("dbId 3", "title 3 for missing regatta", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(missingRegattaName, matchingRace1))),
|
||||
new MediaTrack("dbId 4", "title 4 for missing regatta", "url", startTime, duration, mimeType, new HashSet<RegattaAndRaceIdentifier>(Arrays.asList(new RegattaNameAndRaceName(missingRegattaName, matchingRace3), new RegattaNameAndRaceName(matchingRegattaName, missingRace1)))),
|
||||
new MediaTrack("dbId 5", "title 5 for existing regatta and race", "url", startTime, duration, mimeType, Collections.singleton(new RegattaNameAndRaceName(matchingRegattaName, matchingRace1)))
|
||||
);
|
||||
Collection<RaceIdentifier> regattaRaces = Collections.emptyList();
|
||||
Collection<RaceIdentifier> flexibleRaces = Arrays.asList(
|
||||
new RegattaNameAndRaceName(matchingRegattaName, matchingRace1),
|
||||
new RegattaNameAndRaceName(matchingRegattaName, matchingRace2),
|
||||
new RegattaNameAndRaceName(matchingRegattaName, matchingRace3)
|
||||
);
|
||||
TopLevelMasterData topLevelMasterData = createTopLevelMasterData(regattaRaces , flexibleRaces, allMediaTracks);
|
||||
Collection<MediaTrack> filteredMediaTracks = topLevelMasterData.getFilteredMediaTracks();
|
||||
assertEquals(3, filteredMediaTracks.size());
|
||||
}
|
||||
|
||||
private TopLevelMasterData createTopLevelMasterData(Collection<RaceIdentifier> regattaRaces, Collection<RaceIdentifier> flexibleRaces, Collection<MediaTrack> allMediaTracks) {
|
||||
Set<String> raceColumnNames = new HashSet<>();
|
||||
for (RaceIdentifier regattaAndRaceIdentifier : regattaRaces) {
|
||||
raceColumnNames.add(regattaAndRaceIdentifier.getRaceName());
|
||||
}
|
||||
Regatta regatta = createTestRegatta("regatta name", raceColumnNames);
|
||||
RegattaLeaderboard regattaLeaderboard = new RegattaLeaderboardImpl(regatta, resultDiscardingRule);
|
||||
assignRacesToRegattaLeaderboardColumns(regattaLeaderboard, regattaRaces);
|
||||
|
||||
FlexibleLeaderboard flexibleLeaderboard = new FlexibleLeaderboardImpl("flexible leaderboard", resultDiscardingRule, scoringScheme , courseArea);
|
||||
for (RaceIdentifier regattaAndRaceIdentifier : flexibleRaces) {
|
||||
RaceColumn raceColumn = flexibleLeaderboard.addRaceColumn(regattaAndRaceIdentifier.getRaceName(), isMedal);
|
||||
Fleet defaultFleet = raceColumn.getFleets().iterator().next();
|
||||
raceColumn.setRaceIdentifier(defaultFleet, regattaAndRaceIdentifier);
|
||||
}
|
||||
|
||||
|
||||
List<? extends Leaderboard> leaderboards = Arrays.asList(regattaLeaderboard, flexibleLeaderboard);
|
||||
LeaderboardGroup leaderboardGroup = new LeaderboardGroupImpl("name", "description", "displayName", displayGroupsInReverseOrder , leaderboards);
|
||||
Set<LeaderboardGroup> groupsToExport = Collections.singleton(leaderboardGroup);
|
||||
Iterable<Event> allEvents = Collections.emptyList();
|
||||
Map<String, Regatta> regattaForRaceIdString = Collections.emptyMap();
|
||||
GPSFixStore gpsFixStore = mock(GPSFixStore.class);
|
||||
boolean exportWind = false;
|
||||
TopLevelMasterData topLevelMasterData = new TopLevelMasterData(groupsToExport , allEvents , regattaForRaceIdString, allMediaTracks , gpsFixStore , exportWind, new HashMap<>());
|
||||
return topLevelMasterData;
|
||||
}
|
||||
|
||||
public static void assignRacesToRegattaLeaderboardColumns(RegattaLeaderboard leaderboard, Collection<RaceIdentifier> raceIdentifiers) {
|
||||
Iterator<RaceIdentifier> regattaRacesIterator = raceIdentifiers.iterator();
|
||||
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
||||
raceColumn.setRaceIdentifier(regattaFleet, regattaRacesIterator.next());
|
||||
}
|
||||
}
|
||||
|
||||
public static RegattaImpl createTestRegatta(String regattaName, Iterable<String> raceColumnNames) {
|
||||
Iterable<? extends Fleet> regattaFleets = Collections.singleton(regattaFleet);
|
||||
TrackedRegattaRegistry trackedRegattaRegistry = mock(TrackedRegattaRegistry.class);
|
||||
Series series = new SeriesImpl("series name", isMedal, /* isFleetsCanRunInParallel */ true, regattaFleets, raceColumnNames, trackedRegattaRegistry);
|
||||
Iterable<? extends Series> regattaSeries = Collections.singleton(series);
|
||||
return new RegattaImpl(regattaName, boatClass, startDate, endDate, regattaSeries, persistent, scoringScheme, regatteId , courseArea, OneDesignRankingMetric::new);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
+13
-13
@@ -204,7 +204,7 @@ public class MasterDataImportTest {
|
||||
FleetImpl testFleet1 = new FleetImpl(testFleet1Name);
|
||||
fleets.add(testFleet1);
|
||||
fleets.add(new FleetImpl("testFleet2"));
|
||||
series.add(new SeriesImpl("testSeries", false, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
series.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
UUID regattaUUID = UUID.randomUUID();
|
||||
Regatta regatta = sourceService.createRegatta(
|
||||
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME,
|
||||
@@ -467,7 +467,7 @@ public class MasterDataImportTest {
|
||||
FleetImpl testFleet1 = new FleetImpl("testFleet1");
|
||||
fleets.add(testFleet1);
|
||||
fleets.add(new FleetImpl("testFleet2"));
|
||||
series.add(new SeriesImpl("testSeries", false, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
series.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
UUID regattaUUID = UUID.randomUUID();
|
||||
Regatta regatta = sourceService.createRegatta(
|
||||
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME,
|
||||
@@ -626,7 +626,7 @@ public class MasterDataImportTest {
|
||||
List<Fleet> fleets = new ArrayList<Fleet>();
|
||||
FleetImpl testFleet1 = new FleetImpl("testFleet1");
|
||||
fleets.add(testFleet1);
|
||||
series.add(new SeriesImpl("testSeries", false, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
series.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
UUID regattaUUID = UUID.randomUUID();
|
||||
Regatta regatta = sourceService.createRegatta(RegattaImpl.getDefaultName("testRegatta", "29er"), "29er",
|
||||
/* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /* useStartTimeInference */
|
||||
@@ -789,7 +789,7 @@ public class MasterDataImportTest {
|
||||
FleetImpl testFleet1 = new FleetImpl("testFleet1");
|
||||
fleets.add(testFleet1);
|
||||
fleets.add(new FleetImpl("testFleet2"));
|
||||
series.add(new SeriesImpl("testSeries", false, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
series.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
UUID regattaUUID = UUID.randomUUID();
|
||||
Regatta regatta = sourceService.createRegatta(
|
||||
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME,
|
||||
@@ -949,7 +949,7 @@ public class MasterDataImportTest {
|
||||
FleetImpl testFleet1 = new FleetImpl("testFleet1");
|
||||
fleets.add(testFleet1);
|
||||
fleets.add(new FleetImpl("testFleet2"));
|
||||
series.add(new SeriesImpl("testSeries", false, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
series.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
UUID regattaUUID = UUID.randomUUID();
|
||||
Regatta regatta = sourceService.createRegatta(
|
||||
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME,
|
||||
@@ -1063,7 +1063,7 @@ public class MasterDataImportTest {
|
||||
List<Fleet> fleetsNotToOverride = new ArrayList<Fleet>();
|
||||
FleetImpl testFleet1NotToOverride = new FleetImpl("testFleet1");
|
||||
fleetsNotToOverride.add(testFleet1NotToOverride);
|
||||
seriesNotToOverride.add(new SeriesImpl("testSeries", false, fleetsNotToOverride, emptyRaceColumnNamesList,
|
||||
seriesNotToOverride.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleetsNotToOverride, emptyRaceColumnNamesList,
|
||||
destService));
|
||||
Regatta regattaNotToOverride = destService.createRegatta(
|
||||
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */
|
||||
@@ -1151,7 +1151,7 @@ public class MasterDataImportTest {
|
||||
FleetImpl testFleet1 = new FleetImpl("testFleet1");
|
||||
fleets.add(testFleet1);
|
||||
fleets.add(new FleetImpl("testFleet2"));
|
||||
series.add(new SeriesImpl("testSeries", false, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
series.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
UUID regattaUUID = UUID.randomUUID();
|
||||
Regatta regatta = sourceService.createRegatta(
|
||||
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME,
|
||||
@@ -1261,7 +1261,7 @@ public class MasterDataImportTest {
|
||||
List<Fleet> fleetsToOverride = new ArrayList<Fleet>();
|
||||
FleetImpl testFleet1ToOverride = new FleetImpl("testFleet1");
|
||||
fleetsToOverride.add(testFleet1ToOverride);
|
||||
seriesToOverride.add(new SeriesImpl("testSeries", false, fleetsToOverride, emptyRaceColumnNamesList,
|
||||
seriesToOverride.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleetsToOverride, emptyRaceColumnNamesList,
|
||||
destService));
|
||||
Regatta regattaToOverride = destService.createRegatta(
|
||||
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */
|
||||
@@ -1452,7 +1452,7 @@ public class MasterDataImportTest {
|
||||
FleetImpl testFleet1 = new FleetImpl("testFleet1");
|
||||
fleets.add(testFleet1);
|
||||
fleets.add(new FleetImpl("testFleet2"));
|
||||
series.add(new SeriesImpl("testSeries", false, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
series.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
UUID regattaUUID = UUID.randomUUID();
|
||||
|
||||
Regatta regatta = sourceService.createRegatta(
|
||||
@@ -1587,7 +1587,7 @@ public class MasterDataImportTest {
|
||||
FleetImpl testFleet1 = new FleetImpl("testFleet1");
|
||||
fleets.add(testFleet1);
|
||||
fleets.add(new FleetImpl("testFleet2"));
|
||||
series.add(new SeriesImpl("testSeries", false, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
series.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
UUID regattaUUID = UUID.randomUUID();
|
||||
Regatta regatta = sourceService.createRegatta(
|
||||
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME,
|
||||
@@ -1833,7 +1833,7 @@ public class MasterDataImportTest {
|
||||
FleetImpl testFleet1 = new FleetImpl("testFleet1");
|
||||
fleets.add(testFleet1);
|
||||
fleets.add(new FleetImpl("testFleet2"));
|
||||
series.add(new SeriesImpl("testSeries", false, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
series.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
UUID regattaUUID = UUID.randomUUID();
|
||||
Regatta regatta = sourceService.createRegatta(
|
||||
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME,
|
||||
@@ -2063,8 +2063,8 @@ public class MasterDataImportTest {
|
||||
FleetImpl testFleet1 = new FleetImpl(testFleet1Name);
|
||||
fleets.add(testFleet1);
|
||||
fleets.add(new FleetImpl("testFleet2"));
|
||||
seriesOnSource.add(new SeriesImpl("testSeries", false, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
seriesOnTarget.add(new SeriesImpl("testSeries", false, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
seriesOnSource.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
seriesOnTarget.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService));
|
||||
UUID regattaUUID = UUID.randomUUID();
|
||||
Regatta regatta = sourceService.createRegatta(
|
||||
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */
|
||||
|
||||
+322
-322
@@ -1,322 +1,322 @@
|
||||
package com.sap.sailing.server.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertSame;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.LeaderboardGroupBase;
|
||||
import com.sap.sailing.domain.base.LeaderboardSearchResult;
|
||||
import com.sap.sailing.domain.base.LeaderboardSearchResultBase;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.base.impl.CourseAreaImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseImpl;
|
||||
import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
|
||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
import com.sap.sailing.domain.common.RankingMetrics;
|
||||
import com.sap.sailing.domain.common.RegattaName;
|
||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||
import com.sap.sailing.domain.common.dto.RegattaCreationParametersDTO;
|
||||
import com.sap.sailing.domain.common.dto.SeriesCreationParametersDTO;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
||||
import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore;
|
||||
import com.sap.sailing.domain.test.AbstractTracTracLiveTest;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.CourseAreaJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.EventBaseJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.LeaderboardGroupBaseJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.LeaderboardSearchResultBaseJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.VenueJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CourseAreaJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.EventBaseJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.LeaderboardGroupBaseJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.LeaderboardSearchResultJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.VenueJsonSerializer;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
import com.sap.sailing.server.operationaltransformation.AddColumnToSeries;
|
||||
import com.sap.sailing.server.operationaltransformation.AddRaceDefinition;
|
||||
import com.sap.sailing.server.operationaltransformation.AddSpecificRegatta;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateRegattaLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateTrackedRace;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveRegatta;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.search.KeywordQuery;
|
||||
import com.sap.sse.common.search.Result;
|
||||
import com.sap.sse.shared.media.ImageDescriptor;
|
||||
import com.sap.sse.shared.media.VideoDescriptor;
|
||||
|
||||
public class SearchServiceTest {
|
||||
private RacingEventService server;
|
||||
private Venue kiel;
|
||||
private Venue flensburg;
|
||||
private Event pfingstbusch;
|
||||
private Regatta pfingstbusch29er;
|
||||
private Competitor hassoPlattner;
|
||||
private Competitor alexanderRies;
|
||||
private Competitor antonKoch;
|
||||
private Competitor tobiasSchadewaldt;
|
||||
private Competitor philippBuhl;
|
||||
private Competitor dennisGehrlein;
|
||||
private Regatta pfingstbusch470;
|
||||
private Regatta aalRegatta;
|
||||
private DynamicTrackedRace pfingstbusch29erTrackedR1;
|
||||
private DynamicTrackedRace pfingstbusch29erTrackedR3;
|
||||
private Event aalEvent;
|
||||
private DynamicTrackedRace pfingstbusch470TrackedR1;
|
||||
private DynamicTrackedRace pfingstbusch470TrackedR2;
|
||||
private DynamicTrackedRace aalOrcTrackedR1;
|
||||
private DynamicTrackedRace aalOrcTrackedR2;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
server = new RacingEventServiceImpl();
|
||||
List<Event> allEvents = new ArrayList<>();
|
||||
Util.addAll(server.getAllEvents(), allEvents);
|
||||
for (Event e : allEvents) {
|
||||
server.apply(new RemoveEvent(e.getId()));
|
||||
}
|
||||
Map<String, Leaderboard> allLeaderboards = new HashMap<>(server.getLeaderboards());
|
||||
for (String leaderboardName : allLeaderboards.keySet()) {
|
||||
server.apply(new RemoveLeaderboard(leaderboardName));
|
||||
}
|
||||
server.apply(new RemoveRegatta(new RegattaName("Pfingstbusch (29er)")));
|
||||
server.apply(new RemoveRegatta(new RegattaName("Pfingstbusch (470)")));
|
||||
server.apply(new RemoveRegatta(new RegattaName("Aalregatta (ORC)")));
|
||||
final Calendar cal = new GregorianCalendar();
|
||||
cal.set(2014, 5, 6, 10, 00);
|
||||
final TimePoint pfingstbuschStartDate = new MillisecondsTimePoint(cal.getTime());
|
||||
cal.set(2014, 5, 8, 16, 00);
|
||||
final TimePoint pfingstbuschEndDate = new MillisecondsTimePoint(cal.getTime());
|
||||
pfingstbusch = server.apply(new CreateEvent("Pfingsbusch", /* eventDescription */ null, pfingstbuschStartDate, pfingstbuschEndDate, /* isPublic */
|
||||
"Kiel", true, UUID.randomUUID(), /* officialWebsiteURLAsString */ null, /* sailorsInfoWebsiteURLAsString */ null,
|
||||
/* images */Collections.<ImageDescriptor> emptyList(), /* videos */Collections.<VideoDescriptor> emptyList()));
|
||||
kiel = pfingstbusch.getVenue();
|
||||
final CourseAreaImpl kielAlpha = new CourseAreaImpl("Alpha", UUID.randomUUID());
|
||||
kiel.addCourseArea(kielAlpha);
|
||||
final CourseAreaImpl kielBravo = new CourseAreaImpl("Bravo", UUID.randomUUID());
|
||||
kiel.addCourseArea(kielBravo);
|
||||
final LinkedHashMap<String, SeriesCreationParametersDTO> seriesCreationParams = new LinkedHashMap<String, SeriesCreationParametersDTO>();
|
||||
seriesCreationParams.put("Default",
|
||||
new SeriesCreationParametersDTO(Collections.singletonList(new FleetDTO("Default", /* order */-1, Color.RED)),
|
||||
/* medal */false, /* startsWithZero */false, /* firstColumnIsNonDiscardableCarryForward */false,
|
||||
/* discardingThresholds */null, /* hasSplitFleetContiguousScoring */false));
|
||||
pfingstbusch29er = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Pfingstbusch", "29er"), "29er",
|
||||
/*startDate*/ null, /*endDate*/ null, UUID.randomUUID(),
|
||||
new RegattaCreationParametersDTO(seriesCreationParams), /* persistent */
|
||||
true, new LowPoint(), kielAlpha.getId(), /* useStartTimeInference */ true, RankingMetrics.ONE_DESIGN));
|
||||
server.apply(new AddColumnToSeries(pfingstbusch29er.getRegattaIdentifier(), "Default", "R1"));
|
||||
server.apply(new AddColumnToSeries(pfingstbusch29er.getRegattaIdentifier(), "Default", "R2"));
|
||||
server.apply(new AddColumnToSeries(pfingstbusch29er.getRegattaIdentifier(), "Default", "R3"));
|
||||
RegattaLeaderboard pfingstbusch29erLeaderboard = server.apply(new CreateRegattaLeaderboard(pfingstbusch29er.getRegattaIdentifier(),
|
||||
/* leaderboardDisplayName */ null, /* discardThresholds */ new int[0]));
|
||||
pfingstbusch470 = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Pfingstbusch", "470"), "470",
|
||||
/*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), new RegattaCreationParametersDTO(seriesCreationParams), /* persistent */
|
||||
true, new LowPoint(), kielBravo.getId(), /* useStartTimeInference */ true, RankingMetrics.ONE_DESIGN));
|
||||
server.apply(new AddColumnToSeries(pfingstbusch470.getRegattaIdentifier(), "Default", "R1"));
|
||||
server.apply(new AddColumnToSeries(pfingstbusch470.getRegattaIdentifier(), "Default", "R2"));
|
||||
server.apply(new AddColumnToSeries(pfingstbusch470.getRegattaIdentifier(), "Default", "R3"));
|
||||
RegattaLeaderboard pfingstbusch470Leaderboard = server.apply(new CreateRegattaLeaderboard(pfingstbusch470.getRegattaIdentifier(),
|
||||
/* leaderboardDisplayName */ null, /* discardThresholds */ new int[0]));
|
||||
cal.set(2014, 5, 7, 10, 00);
|
||||
final TimePoint aalStartDate = new MillisecondsTimePoint(cal.getTime());
|
||||
cal.set(2014, 5, 8, 18, 00);
|
||||
final TimePoint aalEndDate = new MillisecondsTimePoint(cal.getTime());
|
||||
aalEvent = server.apply(new CreateEvent("Aalregatta", /* eventDescription */ null, aalStartDate, aalEndDate, /* isPublic */
|
||||
"Flensburg", true, UUID.randomUUID(), /* officialWebsiteURLAsString */ null, /*sailorsInfoWebsiteURLAsString */ null,
|
||||
/* images */Collections.<ImageDescriptor> emptyList(), /* videos */Collections.<VideoDescriptor> emptyList()));
|
||||
flensburg = aalEvent.getVenue();
|
||||
final CourseAreaImpl flensburgStandard = new CourseAreaImpl("Standard", UUID.randomUUID());
|
||||
flensburg.addCourseArea(flensburgStandard);
|
||||
aalRegatta = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Aalregatta", "ORC"), "ORC",
|
||||
/*startDate*/ null, /*endDate*/ null, UUID.randomUUID(),
|
||||
new RegattaCreationParametersDTO(seriesCreationParams), /* persistent */
|
||||
true, new LowPoint(), flensburgStandard.getId(), /* useStartTimeInference */ true, RankingMetrics.ONE_DESIGN));
|
||||
server.apply(new AddColumnToSeries(aalRegatta.getRegattaIdentifier(), "Default", "R1"));
|
||||
server.apply(new AddColumnToSeries(aalRegatta.getRegattaIdentifier(), "Default", "R2"));
|
||||
RegattaLeaderboard aalRegattaLeaderboard = server.apply(new CreateRegattaLeaderboard(aalRegatta.getRegattaIdentifier(),
|
||||
/* leaderboardDisplayName */ null, /* discardThresholds */ new int[0]));
|
||||
hassoPlattner = AbstractTracTracLiveTest.createCompetitor("Hasso Plattner");
|
||||
alexanderRies = AbstractTracTracLiveTest.createCompetitor("Alexander Ries");
|
||||
antonKoch = AbstractTracTracLiveTest.createCompetitor("Anton Koch");
|
||||
tobiasSchadewaldt = AbstractTracTracLiveTest.createCompetitor("Tobias Schadewaldt");
|
||||
philippBuhl = AbstractTracTracLiveTest.createCompetitor("Philipp Buhl");
|
||||
dennisGehrlein = AbstractTracTracLiveTest.createCompetitor("Dennis Gehrlein");
|
||||
final RaceDefinitionImpl pfingstbusch29erR1 = new RaceDefinitionImpl("R1", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), pfingstbusch29er.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { alexanderRies, tobiasSchadewaldt }));
|
||||
final RaceDefinitionImpl pfingstbusch29erR2 = new RaceDefinitionImpl("R2", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), pfingstbusch29er.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { alexanderRies, tobiasSchadewaldt }));
|
||||
final RaceDefinitionImpl pfingstbusch29erR3 = new RaceDefinitionImpl("R3", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), pfingstbusch29er.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { alexanderRies, tobiasSchadewaldt }));
|
||||
server.apply(new AddRaceDefinition(pfingstbusch29er.getRegattaIdentifier(), pfingstbusch29erR1));
|
||||
server.apply(new AddRaceDefinition(pfingstbusch29er.getRegattaIdentifier(), pfingstbusch29erR2));
|
||||
server.apply(new AddRaceDefinition(pfingstbusch29er.getRegattaIdentifier(), pfingstbusch29erR3));
|
||||
// track only R1 and R3
|
||||
pfingstbusch29erTrackedR1 = server.apply(new CreateTrackedRace(pfingstbusch29er.getRaceIdentifier(pfingstbusch29erR1), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE, /* delayToLiveInMillis */ 3000,
|
||||
/* millisecondsOverWhichToAverageWind */ 15000, /* millisecondsOverWhichToAverageSpeed */ 15000));
|
||||
pfingstbusch29erTrackedR1.setStartOfTrackingReceived(pfingstbuschStartDate.plus(1));
|
||||
pfingstbusch29erLeaderboard.getRaceColumnByName("R1").setTrackedRace(pfingstbusch29erLeaderboard.getRaceColumnByName("R1").getFleetByName("Default"), pfingstbusch29erTrackedR1);
|
||||
pfingstbusch29erTrackedR3 = server.apply(new CreateTrackedRace(pfingstbusch29er.getRaceIdentifier(pfingstbusch29erR3), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE, /* delayToLiveInMillis */ 3000,
|
||||
/* millisecondsOverWhichToAverageWind */ 15000, /* millisecondsOverWhichToAverageSpeed */ 15000));
|
||||
pfingstbusch29erLeaderboard.getRaceColumnByName("R3").setTrackedRace(pfingstbusch29erLeaderboard.getRaceColumnByName("R3").getFleetByName("Default"), pfingstbusch29erTrackedR3);
|
||||
|
||||
final RaceDefinitionImpl pfingstbush470R1 = new RaceDefinitionImpl("R1", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), pfingstbusch470.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { philippBuhl, antonKoch }));
|
||||
final RaceDefinitionImpl pfingstbush470R2 = new RaceDefinitionImpl("R2", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), pfingstbusch470.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { philippBuhl, antonKoch }));
|
||||
server.apply(new AddRaceDefinition(pfingstbusch470.getRegattaIdentifier(), pfingstbush470R1));
|
||||
server.apply(new AddRaceDefinition(pfingstbusch470.getRegattaIdentifier(), pfingstbush470R2));
|
||||
// track only R1 and R2
|
||||
pfingstbusch470TrackedR1 = server.apply(new CreateTrackedRace(pfingstbusch470.getRaceIdentifier(pfingstbush470R1), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE, /* delayToLiveInMillis */ 3000,
|
||||
/* millisecondsOverWhichToAverageWind */ 15000, /* millisecondsOverWhichToAverageSpeed */ 15000));
|
||||
pfingstbusch470TrackedR1.setStartOfTrackingReceived(pfingstbuschStartDate.plus(2)); // starts later than 29er
|
||||
pfingstbusch470Leaderboard.getRaceColumnByName("R1").setTrackedRace(pfingstbusch470Leaderboard.getRaceColumnByName("R1").getFleetByName("Default"), pfingstbusch470TrackedR1);
|
||||
pfingstbusch470TrackedR2 = server.apply(new CreateTrackedRace(pfingstbusch470.getRaceIdentifier(pfingstbush470R2), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE, /* delayToLiveInMillis */ 3000,
|
||||
/* millisecondsOverWhichToAverageWind */ 15000, /* millisecondsOverWhichToAverageSpeed */ 15000));
|
||||
pfingstbusch470Leaderboard.getRaceColumnByName("R2").setTrackedRace(pfingstbusch470Leaderboard.getRaceColumnByName("R2").getFleetByName("Default"), pfingstbusch470TrackedR2);
|
||||
|
||||
final RaceDefinitionImpl aalOrcR1 = new RaceDefinitionImpl("R1", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), aalRegatta.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { hassoPlattner, dennisGehrlein, philippBuhl }));
|
||||
final RaceDefinitionImpl aalOrcR2 = new RaceDefinitionImpl("R2", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), aalRegatta.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { hassoPlattner, dennisGehrlein, philippBuhl }));
|
||||
server.apply(new AddRaceDefinition(aalRegatta.getRegattaIdentifier(), aalOrcR1));
|
||||
server.apply(new AddRaceDefinition(aalRegatta.getRegattaIdentifier(), aalOrcR2));
|
||||
// track only R1 and R2
|
||||
aalOrcTrackedR1 = server.apply(new CreateTrackedRace(aalRegatta.getRaceIdentifier(aalOrcR1), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE, /* delayToLiveInMillis */ 3000,
|
||||
/* millisecondsOverWhichToAverageWind */ 15000, /* millisecondsOverWhichToAverageSpeed */ 15000));
|
||||
aalOrcTrackedR1.setStartOfTrackingReceived(aalStartDate);
|
||||
aalRegattaLeaderboard.getRaceColumnByName("R1").setTrackedRace(aalRegattaLeaderboard.getRaceColumnByName("R1").getFleetByName("Default"), aalOrcTrackedR1);
|
||||
aalOrcTrackedR2 = server.apply(new CreateTrackedRace(aalRegatta.getRaceIdentifier(aalOrcR2), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE, /* delayToLiveInMillis */ 3000,
|
||||
/* millisecondsOverWhichToAverageWind */ 15000, /* millisecondsOverWhichToAverageSpeed */ 15000));
|
||||
aalRegattaLeaderboard.getRaceColumnByName("R2").setTrackedRace(aalRegattaLeaderboard.getRaceColumnByName("R2").getFleetByName("Default"), aalOrcTrackedR2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetup() {
|
||||
assertNotNull(pfingstbusch29er);
|
||||
assertNotNull(pfingstbusch29erTrackedR1);
|
||||
assertNotNull(pfingstbusch29erTrackedR3);
|
||||
assertNotNull(pfingstbusch470TrackedR1);
|
||||
assertNotNull(pfingstbusch470TrackedR2);
|
||||
assertNotNull(aalEvent);
|
||||
assertNotNull(aalRegatta);
|
||||
assertNotNull(aalOrcTrackedR1);
|
||||
assertNotNull(aalOrcTrackedR2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimpleSearchByCompetitorName() {
|
||||
Result<LeaderboardSearchResult> searchResults = server.search(new KeywordQuery(Arrays.asList(new String[] { "Tobi" })));
|
||||
assertEquals(1, Util.size(searchResults.getHits()));
|
||||
Regatta foundRegatta = searchResults.getHits().iterator().next().getRegatta();
|
||||
assertSame(pfingstbusch29er, foundRegatta);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimpleSearchByCompetitorName2() {
|
||||
Result<LeaderboardSearchResult> searchResults = server.search(new KeywordQuery(Arrays.asList(new String[] { "Hasso" })));
|
||||
assertEquals(1, Util.size(searchResults.getHits()));
|
||||
Regatta foundRegatta = searchResults.getHits().iterator().next().getRegatta();
|
||||
assertSame(aalRegatta, foundRegatta);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimpleSearchByVenueName() {
|
||||
Result<LeaderboardSearchResult> searchResults = server.search(new KeywordQuery(Arrays.asList(new String[] { "Flensburg" })));
|
||||
assertEquals(1, Util.size(searchResults.getHits()));
|
||||
Regatta foundRegatta = searchResults.getHits().iterator().next().getRegatta();
|
||||
assertSame(aalRegatta, foundRegatta);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimpleSearchByVenueName2() {
|
||||
Result<LeaderboardSearchResult> searchResults = server.search(new KeywordQuery(Arrays.asList(new String[] { "Kiel" })));
|
||||
assertEquals(2, Util.size(searchResults.getHits()));
|
||||
final Iterator<LeaderboardSearchResult> iterator = searchResults.getHits().iterator();
|
||||
final LeaderboardSearchResult firstMatch = iterator.next();
|
||||
Regatta firstFoundRegatta = firstMatch.getRegatta();
|
||||
assertSame(pfingstbusch29er, firstFoundRegatta);
|
||||
assertSame(pfingstbusch, firstMatch.getEvents().iterator().next());
|
||||
final LeaderboardSearchResult secondMatch = iterator.next();
|
||||
Regatta secondFoundRegatta = secondMatch.getRegatta();
|
||||
assertSame(pfingstbusch470, secondFoundRegatta);
|
||||
assertSame(pfingstbusch, secondMatch.getEvents().iterator().next());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMultipleMatchesSortedCorrectly() {
|
||||
Result<LeaderboardSearchResult> searchResults = server.search(new KeywordQuery(Arrays.asList(new String[] { "Buhl" })));
|
||||
assertEquals(2, Util.size(searchResults.getHits()));
|
||||
final Iterator<LeaderboardSearchResult> iter = searchResults.getHits().iterator();
|
||||
final LeaderboardSearchResult firstMatch = iter.next();
|
||||
Regatta earlierStartRegatta = firstMatch.getRegatta();
|
||||
assertSame(pfingstbusch470, earlierStartRegatta);
|
||||
assertSame(pfingstbusch, firstMatch.getEvents().iterator().next());
|
||||
final LeaderboardSearchResult secondMatch = iter.next();
|
||||
Regatta laterStartRegatta = secondMatch.getRegatta();
|
||||
assertSame(aalRegatta, laterStartRegatta);
|
||||
assertSame(aalEvent, secondMatch.getEvents().iterator().next());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSerializeAndDeserializeSearchResult() throws JsonDeserializationException {
|
||||
Result<LeaderboardSearchResult> searchResults = server.search(new KeywordQuery(Arrays.asList(new String[] { "Buhl" })));
|
||||
LeaderboardGroupBaseJsonSerializer leaderboardGroupBaseJsonSerializer = new LeaderboardGroupBaseJsonSerializer();
|
||||
LeaderboardSearchResultJsonSerializer serializer = new LeaderboardSearchResultJsonSerializer(new EventBaseJsonSerializer(new VenueJsonSerializer(new CourseAreaJsonSerializer()),
|
||||
leaderboardGroupBaseJsonSerializer),
|
||||
leaderboardGroupBaseJsonSerializer);
|
||||
LeaderboardGroupBaseJsonDeserializer leaderboardGroupBaseJsonDeserializer = new LeaderboardGroupBaseJsonDeserializer();
|
||||
LeaderboardSearchResultBaseJsonDeserializer deserializer = new LeaderboardSearchResultBaseJsonDeserializer(
|
||||
new EventBaseJsonDeserializer(new VenueJsonDeserializer(new CourseAreaJsonDeserializer(DomainFactory.INSTANCE)),
|
||||
leaderboardGroupBaseJsonDeserializer), leaderboardGroupBaseJsonDeserializer);
|
||||
final LeaderboardSearchResult expected = searchResults.getHits().iterator().next();
|
||||
LeaderboardSearchResultBase deserialized = deserializer.deserialize(serializer.serialize(expected));
|
||||
assertEquals("Pfingstbusch (470)", deserialized.getRegattaName());
|
||||
assertEquals(expected.getEvents().iterator().next().getName(), deserialized.getEvents().iterator().next().getName());
|
||||
assertEquals(expected.getEvents().iterator().next().getId(), deserialized.getEvents().iterator().next().getId());
|
||||
assertEquals(expected.getEvents().iterator().next().getStartDate(), deserialized.getEvents().iterator().next().getStartDate());
|
||||
assertEquals(expected.getEvents().iterator().next().getEndDate(), deserialized.getEvents().iterator().next().getEndDate());
|
||||
assertEquals(expected.getEvents().iterator().next().getVenue().getName(), deserialized.getEvents().iterator().next().getVenue().getName());
|
||||
Iterator<LeaderboardGroup> expectedLGs = expected.getLeaderboardGroups().iterator();
|
||||
Iterator<? extends LeaderboardGroupBase> deserializedLGs = deserialized.getLeaderboardGroups().iterator();
|
||||
while (expectedLGs.hasNext()) {
|
||||
assertTrue(deserializedLGs.hasNext());
|
||||
LeaderboardGroup expectedLG = expectedLGs.next();
|
||||
LeaderboardGroupBase deserializedLG = deserializedLGs.next();
|
||||
assertEquals(expectedLG.getId(), deserializedLG.getId());
|
||||
assertEquals(expectedLG.getName(), deserializedLG.getName());
|
||||
assertEquals(expectedLG.getDescription(), deserializedLG.getDescription());
|
||||
}
|
||||
}
|
||||
}
|
||||
package com.sap.sailing.server.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertSame;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.LeaderboardGroupBase;
|
||||
import com.sap.sailing.domain.base.LeaderboardSearchResult;
|
||||
import com.sap.sailing.domain.base.LeaderboardSearchResultBase;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.base.impl.CourseAreaImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseImpl;
|
||||
import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
|
||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
import com.sap.sailing.domain.common.RankingMetrics;
|
||||
import com.sap.sailing.domain.common.RegattaName;
|
||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||
import com.sap.sailing.domain.common.dto.RegattaCreationParametersDTO;
|
||||
import com.sap.sailing.domain.common.dto.SeriesCreationParametersDTO;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
||||
import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore;
|
||||
import com.sap.sailing.domain.test.AbstractTracTracLiveTest;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.CourseAreaJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.EventBaseJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.LeaderboardGroupBaseJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.LeaderboardSearchResultBaseJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.VenueJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CourseAreaJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.EventBaseJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.LeaderboardGroupBaseJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.LeaderboardSearchResultJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.VenueJsonSerializer;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
import com.sap.sailing.server.operationaltransformation.AddColumnToSeries;
|
||||
import com.sap.sailing.server.operationaltransformation.AddRaceDefinition;
|
||||
import com.sap.sailing.server.operationaltransformation.AddSpecificRegatta;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateRegattaLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateTrackedRace;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveRegatta;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.search.KeywordQuery;
|
||||
import com.sap.sse.common.search.Result;
|
||||
import com.sap.sse.shared.media.ImageDescriptor;
|
||||
import com.sap.sse.shared.media.VideoDescriptor;
|
||||
|
||||
public class SearchServiceTest {
|
||||
private RacingEventService server;
|
||||
private Venue kiel;
|
||||
private Venue flensburg;
|
||||
private Event pfingstbusch;
|
||||
private Regatta pfingstbusch29er;
|
||||
private Competitor hassoPlattner;
|
||||
private Competitor alexanderRies;
|
||||
private Competitor antonKoch;
|
||||
private Competitor tobiasSchadewaldt;
|
||||
private Competitor philippBuhl;
|
||||
private Competitor dennisGehrlein;
|
||||
private Regatta pfingstbusch470;
|
||||
private Regatta aalRegatta;
|
||||
private DynamicTrackedRace pfingstbusch29erTrackedR1;
|
||||
private DynamicTrackedRace pfingstbusch29erTrackedR3;
|
||||
private Event aalEvent;
|
||||
private DynamicTrackedRace pfingstbusch470TrackedR1;
|
||||
private DynamicTrackedRace pfingstbusch470TrackedR2;
|
||||
private DynamicTrackedRace aalOrcTrackedR1;
|
||||
private DynamicTrackedRace aalOrcTrackedR2;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
server = new RacingEventServiceImpl();
|
||||
List<Event> allEvents = new ArrayList<>();
|
||||
Util.addAll(server.getAllEvents(), allEvents);
|
||||
for (Event e : allEvents) {
|
||||
server.apply(new RemoveEvent(e.getId()));
|
||||
}
|
||||
Map<String, Leaderboard> allLeaderboards = new HashMap<>(server.getLeaderboards());
|
||||
for (String leaderboardName : allLeaderboards.keySet()) {
|
||||
server.apply(new RemoveLeaderboard(leaderboardName));
|
||||
}
|
||||
server.apply(new RemoveRegatta(new RegattaName("Pfingstbusch (29er)")));
|
||||
server.apply(new RemoveRegatta(new RegattaName("Pfingstbusch (470)")));
|
||||
server.apply(new RemoveRegatta(new RegattaName("Aalregatta (ORC)")));
|
||||
final Calendar cal = new GregorianCalendar();
|
||||
cal.set(2014, 5, 6, 10, 00);
|
||||
final TimePoint pfingstbuschStartDate = new MillisecondsTimePoint(cal.getTime());
|
||||
cal.set(2014, 5, 8, 16, 00);
|
||||
final TimePoint pfingstbuschEndDate = new MillisecondsTimePoint(cal.getTime());
|
||||
pfingstbusch = server.apply(new CreateEvent("Pfingsbusch", /* eventDescription */ null, pfingstbuschStartDate, pfingstbuschEndDate, /* isPublic */
|
||||
"Kiel", true, UUID.randomUUID(), /* officialWebsiteURLAsString */ null, /* sailorsInfoWebsiteURLAsString */ null,
|
||||
/* images */Collections.<ImageDescriptor> emptyList(), /* videos */Collections.<VideoDescriptor> emptyList()));
|
||||
kiel = pfingstbusch.getVenue();
|
||||
final CourseAreaImpl kielAlpha = new CourseAreaImpl("Alpha", UUID.randomUUID());
|
||||
kiel.addCourseArea(kielAlpha);
|
||||
final CourseAreaImpl kielBravo = new CourseAreaImpl("Bravo", UUID.randomUUID());
|
||||
kiel.addCourseArea(kielBravo);
|
||||
final LinkedHashMap<String, SeriesCreationParametersDTO> seriesCreationParams = new LinkedHashMap<String, SeriesCreationParametersDTO>();
|
||||
seriesCreationParams.put("Default",
|
||||
new SeriesCreationParametersDTO(Collections.singletonList(new FleetDTO("Default", /* order */-1, Color.RED)),
|
||||
/* medal */false, /* fleetsCanRunInParallel */ true, /* startsWithZero */false, /* firstColumnIsNonDiscardableCarryForward */false,
|
||||
/* discardingThresholds */null, /* hasSplitFleetContiguousScoring */false));
|
||||
pfingstbusch29er = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Pfingstbusch", "29er"), "29er",
|
||||
/*startDate*/ null, /*endDate*/ null, UUID.randomUUID(),
|
||||
new RegattaCreationParametersDTO(seriesCreationParams), /* persistent */
|
||||
true, new LowPoint(), kielAlpha.getId(), /* useStartTimeInference */ true, RankingMetrics.ONE_DESIGN));
|
||||
server.apply(new AddColumnToSeries(pfingstbusch29er.getRegattaIdentifier(), "Default", "R1"));
|
||||
server.apply(new AddColumnToSeries(pfingstbusch29er.getRegattaIdentifier(), "Default", "R2"));
|
||||
server.apply(new AddColumnToSeries(pfingstbusch29er.getRegattaIdentifier(), "Default", "R3"));
|
||||
RegattaLeaderboard pfingstbusch29erLeaderboard = server.apply(new CreateRegattaLeaderboard(pfingstbusch29er.getRegattaIdentifier(),
|
||||
/* leaderboardDisplayName */ null, /* discardThresholds */ new int[0]));
|
||||
pfingstbusch470 = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Pfingstbusch", "470"), "470",
|
||||
/*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), new RegattaCreationParametersDTO(seriesCreationParams), /* persistent */
|
||||
true, new LowPoint(), kielBravo.getId(), /* useStartTimeInference */ true, RankingMetrics.ONE_DESIGN));
|
||||
server.apply(new AddColumnToSeries(pfingstbusch470.getRegattaIdentifier(), "Default", "R1"));
|
||||
server.apply(new AddColumnToSeries(pfingstbusch470.getRegattaIdentifier(), "Default", "R2"));
|
||||
server.apply(new AddColumnToSeries(pfingstbusch470.getRegattaIdentifier(), "Default", "R3"));
|
||||
RegattaLeaderboard pfingstbusch470Leaderboard = server.apply(new CreateRegattaLeaderboard(pfingstbusch470.getRegattaIdentifier(),
|
||||
/* leaderboardDisplayName */ null, /* discardThresholds */ new int[0]));
|
||||
cal.set(2014, 5, 7, 10, 00);
|
||||
final TimePoint aalStartDate = new MillisecondsTimePoint(cal.getTime());
|
||||
cal.set(2014, 5, 8, 18, 00);
|
||||
final TimePoint aalEndDate = new MillisecondsTimePoint(cal.getTime());
|
||||
aalEvent = server.apply(new CreateEvent("Aalregatta", /* eventDescription */ null, aalStartDate, aalEndDate, /* isPublic */
|
||||
"Flensburg", true, UUID.randomUUID(), /* officialWebsiteURLAsString */ null, /*sailorsInfoWebsiteURLAsString */ null,
|
||||
/* images */Collections.<ImageDescriptor> emptyList(), /* videos */Collections.<VideoDescriptor> emptyList()));
|
||||
flensburg = aalEvent.getVenue();
|
||||
final CourseAreaImpl flensburgStandard = new CourseAreaImpl("Standard", UUID.randomUUID());
|
||||
flensburg.addCourseArea(flensburgStandard);
|
||||
aalRegatta = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Aalregatta", "ORC"), "ORC",
|
||||
/*startDate*/ null, /*endDate*/ null, UUID.randomUUID(),
|
||||
new RegattaCreationParametersDTO(seriesCreationParams), /* persistent */
|
||||
true, new LowPoint(), flensburgStandard.getId(), /* useStartTimeInference */ true, RankingMetrics.ONE_DESIGN));
|
||||
server.apply(new AddColumnToSeries(aalRegatta.getRegattaIdentifier(), "Default", "R1"));
|
||||
server.apply(new AddColumnToSeries(aalRegatta.getRegattaIdentifier(), "Default", "R2"));
|
||||
RegattaLeaderboard aalRegattaLeaderboard = server.apply(new CreateRegattaLeaderboard(aalRegatta.getRegattaIdentifier(),
|
||||
/* leaderboardDisplayName */ null, /* discardThresholds */ new int[0]));
|
||||
hassoPlattner = AbstractTracTracLiveTest.createCompetitor("Hasso Plattner");
|
||||
alexanderRies = AbstractTracTracLiveTest.createCompetitor("Alexander Ries");
|
||||
antonKoch = AbstractTracTracLiveTest.createCompetitor("Anton Koch");
|
||||
tobiasSchadewaldt = AbstractTracTracLiveTest.createCompetitor("Tobias Schadewaldt");
|
||||
philippBuhl = AbstractTracTracLiveTest.createCompetitor("Philipp Buhl");
|
||||
dennisGehrlein = AbstractTracTracLiveTest.createCompetitor("Dennis Gehrlein");
|
||||
final RaceDefinitionImpl pfingstbusch29erR1 = new RaceDefinitionImpl("R1", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), pfingstbusch29er.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { alexanderRies, tobiasSchadewaldt }));
|
||||
final RaceDefinitionImpl pfingstbusch29erR2 = new RaceDefinitionImpl("R2", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), pfingstbusch29er.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { alexanderRies, tobiasSchadewaldt }));
|
||||
final RaceDefinitionImpl pfingstbusch29erR3 = new RaceDefinitionImpl("R3", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), pfingstbusch29er.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { alexanderRies, tobiasSchadewaldt }));
|
||||
server.apply(new AddRaceDefinition(pfingstbusch29er.getRegattaIdentifier(), pfingstbusch29erR1));
|
||||
server.apply(new AddRaceDefinition(pfingstbusch29er.getRegattaIdentifier(), pfingstbusch29erR2));
|
||||
server.apply(new AddRaceDefinition(pfingstbusch29er.getRegattaIdentifier(), pfingstbusch29erR3));
|
||||
// track only R1 and R3
|
||||
pfingstbusch29erTrackedR1 = server.apply(new CreateTrackedRace(pfingstbusch29er.getRaceIdentifier(pfingstbusch29erR1), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE, /* delayToLiveInMillis */ 3000,
|
||||
/* millisecondsOverWhichToAverageWind */ 15000, /* millisecondsOverWhichToAverageSpeed */ 15000));
|
||||
pfingstbusch29erTrackedR1.setStartOfTrackingReceived(pfingstbuschStartDate.plus(1));
|
||||
pfingstbusch29erLeaderboard.getRaceColumnByName("R1").setTrackedRace(pfingstbusch29erLeaderboard.getRaceColumnByName("R1").getFleetByName("Default"), pfingstbusch29erTrackedR1);
|
||||
pfingstbusch29erTrackedR3 = server.apply(new CreateTrackedRace(pfingstbusch29er.getRaceIdentifier(pfingstbusch29erR3), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE, /* delayToLiveInMillis */ 3000,
|
||||
/* millisecondsOverWhichToAverageWind */ 15000, /* millisecondsOverWhichToAverageSpeed */ 15000));
|
||||
pfingstbusch29erLeaderboard.getRaceColumnByName("R3").setTrackedRace(pfingstbusch29erLeaderboard.getRaceColumnByName("R3").getFleetByName("Default"), pfingstbusch29erTrackedR3);
|
||||
|
||||
final RaceDefinitionImpl pfingstbush470R1 = new RaceDefinitionImpl("R1", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), pfingstbusch470.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { philippBuhl, antonKoch }));
|
||||
final RaceDefinitionImpl pfingstbush470R2 = new RaceDefinitionImpl("R2", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), pfingstbusch470.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { philippBuhl, antonKoch }));
|
||||
server.apply(new AddRaceDefinition(pfingstbusch470.getRegattaIdentifier(), pfingstbush470R1));
|
||||
server.apply(new AddRaceDefinition(pfingstbusch470.getRegattaIdentifier(), pfingstbush470R2));
|
||||
// track only R1 and R2
|
||||
pfingstbusch470TrackedR1 = server.apply(new CreateTrackedRace(pfingstbusch470.getRaceIdentifier(pfingstbush470R1), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE, /* delayToLiveInMillis */ 3000,
|
||||
/* millisecondsOverWhichToAverageWind */ 15000, /* millisecondsOverWhichToAverageSpeed */ 15000));
|
||||
pfingstbusch470TrackedR1.setStartOfTrackingReceived(pfingstbuschStartDate.plus(2)); // starts later than 29er
|
||||
pfingstbusch470Leaderboard.getRaceColumnByName("R1").setTrackedRace(pfingstbusch470Leaderboard.getRaceColumnByName("R1").getFleetByName("Default"), pfingstbusch470TrackedR1);
|
||||
pfingstbusch470TrackedR2 = server.apply(new CreateTrackedRace(pfingstbusch470.getRaceIdentifier(pfingstbush470R2), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE, /* delayToLiveInMillis */ 3000,
|
||||
/* millisecondsOverWhichToAverageWind */ 15000, /* millisecondsOverWhichToAverageSpeed */ 15000));
|
||||
pfingstbusch470Leaderboard.getRaceColumnByName("R2").setTrackedRace(pfingstbusch470Leaderboard.getRaceColumnByName("R2").getFleetByName("Default"), pfingstbusch470TrackedR2);
|
||||
|
||||
final RaceDefinitionImpl aalOrcR1 = new RaceDefinitionImpl("R1", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), aalRegatta.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { hassoPlattner, dennisGehrlein, philippBuhl }));
|
||||
final RaceDefinitionImpl aalOrcR2 = new RaceDefinitionImpl("R2", new CourseImpl("up/down", Collections.<Waypoint>emptyList()), aalRegatta.getBoatClass(),
|
||||
Arrays.asList(new Competitor[] { hassoPlattner, dennisGehrlein, philippBuhl }));
|
||||
server.apply(new AddRaceDefinition(aalRegatta.getRegattaIdentifier(), aalOrcR1));
|
||||
server.apply(new AddRaceDefinition(aalRegatta.getRegattaIdentifier(), aalOrcR2));
|
||||
// track only R1 and R2
|
||||
aalOrcTrackedR1 = server.apply(new CreateTrackedRace(aalRegatta.getRaceIdentifier(aalOrcR1), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE, /* delayToLiveInMillis */ 3000,
|
||||
/* millisecondsOverWhichToAverageWind */ 15000, /* millisecondsOverWhichToAverageSpeed */ 15000));
|
||||
aalOrcTrackedR1.setStartOfTrackingReceived(aalStartDate);
|
||||
aalRegattaLeaderboard.getRaceColumnByName("R1").setTrackedRace(aalRegattaLeaderboard.getRaceColumnByName("R1").getFleetByName("Default"), aalOrcTrackedR1);
|
||||
aalOrcTrackedR2 = server.apply(new CreateTrackedRace(aalRegatta.getRaceIdentifier(aalOrcR2), EmptyWindStore.INSTANCE, EmptyGPSFixStore.INSTANCE, /* delayToLiveInMillis */ 3000,
|
||||
/* millisecondsOverWhichToAverageWind */ 15000, /* millisecondsOverWhichToAverageSpeed */ 15000));
|
||||
aalRegattaLeaderboard.getRaceColumnByName("R2").setTrackedRace(aalRegattaLeaderboard.getRaceColumnByName("R2").getFleetByName("Default"), aalOrcTrackedR2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetup() {
|
||||
assertNotNull(pfingstbusch29er);
|
||||
assertNotNull(pfingstbusch29erTrackedR1);
|
||||
assertNotNull(pfingstbusch29erTrackedR3);
|
||||
assertNotNull(pfingstbusch470TrackedR1);
|
||||
assertNotNull(pfingstbusch470TrackedR2);
|
||||
assertNotNull(aalEvent);
|
||||
assertNotNull(aalRegatta);
|
||||
assertNotNull(aalOrcTrackedR1);
|
||||
assertNotNull(aalOrcTrackedR2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimpleSearchByCompetitorName() {
|
||||
Result<LeaderboardSearchResult> searchResults = server.search(new KeywordQuery(Arrays.asList(new String[] { "Tobi" })));
|
||||
assertEquals(1, Util.size(searchResults.getHits()));
|
||||
Regatta foundRegatta = searchResults.getHits().iterator().next().getRegatta();
|
||||
assertSame(pfingstbusch29er, foundRegatta);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimpleSearchByCompetitorName2() {
|
||||
Result<LeaderboardSearchResult> searchResults = server.search(new KeywordQuery(Arrays.asList(new String[] { "Hasso" })));
|
||||
assertEquals(1, Util.size(searchResults.getHits()));
|
||||
Regatta foundRegatta = searchResults.getHits().iterator().next().getRegatta();
|
||||
assertSame(aalRegatta, foundRegatta);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimpleSearchByVenueName() {
|
||||
Result<LeaderboardSearchResult> searchResults = server.search(new KeywordQuery(Arrays.asList(new String[] { "Flensburg" })));
|
||||
assertEquals(1, Util.size(searchResults.getHits()));
|
||||
Regatta foundRegatta = searchResults.getHits().iterator().next().getRegatta();
|
||||
assertSame(aalRegatta, foundRegatta);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimpleSearchByVenueName2() {
|
||||
Result<LeaderboardSearchResult> searchResults = server.search(new KeywordQuery(Arrays.asList(new String[] { "Kiel" })));
|
||||
assertEquals(2, Util.size(searchResults.getHits()));
|
||||
final Iterator<LeaderboardSearchResult> iterator = searchResults.getHits().iterator();
|
||||
final LeaderboardSearchResult firstMatch = iterator.next();
|
||||
Regatta firstFoundRegatta = firstMatch.getRegatta();
|
||||
assertSame(pfingstbusch29er, firstFoundRegatta);
|
||||
assertSame(pfingstbusch, firstMatch.getEvents().iterator().next());
|
||||
final LeaderboardSearchResult secondMatch = iterator.next();
|
||||
Regatta secondFoundRegatta = secondMatch.getRegatta();
|
||||
assertSame(pfingstbusch470, secondFoundRegatta);
|
||||
assertSame(pfingstbusch, secondMatch.getEvents().iterator().next());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMultipleMatchesSortedCorrectly() {
|
||||
Result<LeaderboardSearchResult> searchResults = server.search(new KeywordQuery(Arrays.asList(new String[] { "Buhl" })));
|
||||
assertEquals(2, Util.size(searchResults.getHits()));
|
||||
final Iterator<LeaderboardSearchResult> iter = searchResults.getHits().iterator();
|
||||
final LeaderboardSearchResult firstMatch = iter.next();
|
||||
Regatta earlierStartRegatta = firstMatch.getRegatta();
|
||||
assertSame(pfingstbusch470, earlierStartRegatta);
|
||||
assertSame(pfingstbusch, firstMatch.getEvents().iterator().next());
|
||||
final LeaderboardSearchResult secondMatch = iter.next();
|
||||
Regatta laterStartRegatta = secondMatch.getRegatta();
|
||||
assertSame(aalRegatta, laterStartRegatta);
|
||||
assertSame(aalEvent, secondMatch.getEvents().iterator().next());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSerializeAndDeserializeSearchResult() throws JsonDeserializationException {
|
||||
Result<LeaderboardSearchResult> searchResults = server.search(new KeywordQuery(Arrays.asList(new String[] { "Buhl" })));
|
||||
LeaderboardGroupBaseJsonSerializer leaderboardGroupBaseJsonSerializer = new LeaderboardGroupBaseJsonSerializer();
|
||||
LeaderboardSearchResultJsonSerializer serializer = new LeaderboardSearchResultJsonSerializer(new EventBaseJsonSerializer(new VenueJsonSerializer(new CourseAreaJsonSerializer()),
|
||||
leaderboardGroupBaseJsonSerializer),
|
||||
leaderboardGroupBaseJsonSerializer);
|
||||
LeaderboardGroupBaseJsonDeserializer leaderboardGroupBaseJsonDeserializer = new LeaderboardGroupBaseJsonDeserializer();
|
||||
LeaderboardSearchResultBaseJsonDeserializer deserializer = new LeaderboardSearchResultBaseJsonDeserializer(
|
||||
new EventBaseJsonDeserializer(new VenueJsonDeserializer(new CourseAreaJsonDeserializer(DomainFactory.INSTANCE)),
|
||||
leaderboardGroupBaseJsonDeserializer), leaderboardGroupBaseJsonDeserializer);
|
||||
final LeaderboardSearchResult expected = searchResults.getHits().iterator().next();
|
||||
LeaderboardSearchResultBase deserialized = deserializer.deserialize(serializer.serialize(expected));
|
||||
assertEquals("Pfingstbusch (470)", deserialized.getRegattaName());
|
||||
assertEquals(expected.getEvents().iterator().next().getName(), deserialized.getEvents().iterator().next().getName());
|
||||
assertEquals(expected.getEvents().iterator().next().getId(), deserialized.getEvents().iterator().next().getId());
|
||||
assertEquals(expected.getEvents().iterator().next().getStartDate(), deserialized.getEvents().iterator().next().getStartDate());
|
||||
assertEquals(expected.getEvents().iterator().next().getEndDate(), deserialized.getEvents().iterator().next().getEndDate());
|
||||
assertEquals(expected.getEvents().iterator().next().getVenue().getName(), deserialized.getEvents().iterator().next().getVenue().getName());
|
||||
Iterator<LeaderboardGroup> expectedLGs = expected.getLeaderboardGroups().iterator();
|
||||
Iterator<? extends LeaderboardGroupBase> deserializedLGs = deserialized.getLeaderboardGroups().iterator();
|
||||
while (expectedLGs.hasNext()) {
|
||||
assertTrue(deserializedLGs.hasNext());
|
||||
LeaderboardGroup expectedLG = expectedLGs.next();
|
||||
LeaderboardGroupBase deserializedLG = deserializedLGs.next();
|
||||
assertEquals(expectedLG.getId(), deserializedLG.getId());
|
||||
assertEquals(expectedLG.getName(), deserializedLG.getName());
|
||||
assertEquals(expectedLG.getDescription(), deserializedLG.getDescription());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user