Skip to content

Commit 4982805

Browse files
authored
fix(server): fix crash when there is no rating events yet (#564)
1 parent 906eb7b commit 4982805

File tree

4 files changed

+30
-2
lines changed

4 files changed

+30
-2
lines changed

judgels-backends/judgels-server-api/src/main/java/judgels/uriel/api/contest/rating/ContestRatingChanges.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import org.immutables.value.Value;
88

99
@Value.Immutable
10-
@JsonDeserialize(as = ImmutableContestRating.class)
10+
@JsonDeserialize(as = ImmutableContestRatingChanges.class)
1111
public interface ContestRatingChanges {
1212
Map<String, UserRating> getRatingsMap();
1313
Map<String, Profile> getProfilesMap();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package judgels.uriel.api;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import judgels.uriel.ContestRatingClient;
6+
import org.junit.jupiter.api.Test;
7+
8+
class ContestRatingApiIntegrationTests extends BaseUrielApiIntegrationTests {
9+
private final ContestRatingClient ratingClient = createClient(ContestRatingClient.class);
10+
11+
@Test
12+
void get_pending_ratings() {
13+
assertThat(ratingClient.getContestsPendingRating(superadminToken).getData())
14+
.isEmpty();
15+
}
16+
}

judgels-backends/judgels-server-app/src/main/java/judgels/uriel/contest/rating/ContestRatingResource.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public ContestsPendingRatingResponse getContestsPendingRating(@HeaderParam(AUTHO
6262
checkAllowed(contestRoleChecker.canAdminister(actorJid));
6363

6464
Optional<RatingEvent> latestEvent = jophielClient.getLatestRatingEvent();
65-
Instant latestTime = latestEvent.isPresent() ? latestEvent.get().getTime() : Instant.MIN;
65+
Instant latestTime = latestEvent.isPresent() ? latestEvent.get().getTime() : Instant.EPOCH;
6666

6767
List<Contest> contests = contestStore.getPublicContestsAfter(latestTime);
6868
Map<String, ContestRatingChanges> ratingChangesMap = contests.stream()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package judgels.uriel;
2+
3+
import feign.Headers;
4+
import feign.Param;
5+
import feign.RequestLine;
6+
import judgels.uriel.api.contest.rating.ContestsPendingRatingResponse;
7+
8+
public interface ContestRatingClient {
9+
@RequestLine("GET /api/v2/contest-rating/pending")
10+
@Headers("Authorization: Bearer {token}")
11+
ContestsPendingRatingResponse getContestsPendingRating(@Param("token") String token);
12+
}

0 commit comments

Comments
 (0)