Skip to content

Commit fef0ce6

Browse files
committed
feat: Add test case for the medal changes
1 parent 0fdeb18 commit fef0ce6

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

Sunrise.Server.Tests/Services/ScoreService/ScoreServiceSubmitScoreTests.cs

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1756,4 +1756,58 @@ public async Task TestUserRankingWhenBothUsersHaveSamePpAndUserBSubmitsHigherPpM
17561756
Assert.Equal(1, userStatsAFinal!.BestGlobalRank);
17571757
Assert.Equal(1, userStatsBFinal!.BestGlobalRank);
17581758
}
1759+
1760+
[Theory]
1761+
[InlineData(true)]
1762+
[InlineData(false)]
1763+
public async Task TestMedalNotAwardedWithDifficultyReducingMods(bool hasNonEligibleMod)
1764+
{
1765+
// Arrange
1766+
var scoreService = Scope.ServiceProvider.GetRequiredService<Server.Services.ScoreService>();
1767+
1768+
var (session, user) = await CreateTestSession();
1769+
1770+
var (replay, beatmapId) = GetValidTestReplay();
1771+
1772+
var score = replay.GetScore();
1773+
score.BeatmapId = beatmapId;
1774+
score.GameMode = GameMode.Standard;
1775+
score.Mods = hasNonEligibleMod ? Mods.HalfTime : Mods.None;
1776+
1777+
score.EnrichWithSessionData(session);
1778+
1779+
var beatmapSet = _mocker.Beatmap.GetRandomBeatmapSet();
1780+
var beatmap = beatmapSet.Beatmaps.First() ?? throw new Exception("Beatmap is null");
1781+
beatmap.EnrichWithScoreData(score);
1782+
beatmap.DifficultyRating = 1.5;
1783+
1784+
await _mocker.Beatmap.MockBeatmapSet(beatmapSet);
1785+
1786+
// Act
1787+
var resultString = await scoreService.SubmitScore(
1788+
session,
1789+
score.ToScoreString(user.Username),
1790+
score.BeatmapHash,
1791+
_mocker.GetRandomInteger(),
1792+
_mocker.GetRandomInteger(),
1793+
_mocker.GetRandomString(),
1794+
session.Attributes.UserHash,
1795+
_replayService.GenerateReplayFormFile(),
1796+
null
1797+
);
1798+
1799+
// Assert
1800+
Assert.DoesNotContain("error", resultString);
1801+
1802+
var userUnlockedMedals = await Database.Users.Medals.GetUserMedals(session.UserId);
1803+
1804+
if (hasNonEligibleMod)
1805+
{
1806+
Assert.DoesNotContain(userUnlockedMedals, m => m.MedalId == 1);
1807+
}
1808+
else
1809+
{
1810+
Assert.Contains(userUnlockedMedals, m => m.MedalId == 1);
1811+
}
1812+
}
17591813
}

0 commit comments

Comments
 (0)