1
0
mirror of https://github.com/ppy/osu.git synced 2026-06-05 19:36:03 +08:00

Add failing test

This commit is contained in:
Bartłomiej Dach
2025-08-14 14:18:25 +02:00
Unverified
parent b5e8d83900
commit 116a45c9cb
@@ -19,6 +19,10 @@ using osu.Framework.Utils;
using osu.Game.Beatmaps;
using osu.Game.Configuration;
using osu.Game.Graphics.UserInterface;
using osu.Game.Online.API;
using osu.Game.Online.API.Requests;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Online.Leaderboards;
using osu.Game.Overlays;
using osu.Game.Overlays.Notifications;
using osu.Game.Rulesets.Mods;
@@ -64,6 +68,9 @@ namespace osu.Game.Tests.Visual.Gameplay
[Cached(typeof(BatteryInfo))]
private readonly LocalBatteryInfo batteryInfo = new LocalBatteryInfo();
[Cached]
private readonly LeaderboardManager leaderboardManager;
private readonly ChangelogOverlay changelogOverlay;
private double savedTrackVolume;
@@ -74,6 +81,7 @@ namespace osu.Game.Tests.Visual.Gameplay
{
AddRange(new Drawable[]
{
leaderboardManager = new LeaderboardManager(),
notificationOverlay = new NotificationOverlay
{
Anchor = Anchor.TopRight,
@@ -364,6 +372,45 @@ namespace osu.Game.Tests.Visual.Gameplay
}, () => !volumeOverlay.IsMuted.Value && audioManager.Volume.Value == 0.5 && audioManager.VolumeTrack.Value == 0.5);
}
[Test]
public void TestLeaderboardForciblyRefetchedOnRestart([Values] bool quickRestart)
{
int leaderboardRequestsHandled = 0;
AddStep("set up request handling", () => ((DummyAPIAccess)API).HandleRequest = req =>
{
switch (req)
{
case GetScoresRequest getScores:
leaderboardRequestsHandled++;
getScores.TriggerSuccess(new APIScoresCollection { Scores = [] });
return true;
default:
return false;
}
});
AddStep("load player", () => resetPlayer(true));
AddUntilStep("wait for loader to become current", () => loader.IsCurrentScreen());
AddUntilStep("wait for player to be current", () => player.IsCurrentScreen());
AddAssert("leaderboard fetched once", () => leaderboardRequestsHandled, () => Is.EqualTo(1));
AddStep("restart player", () =>
{
var lastPlayer = player;
player = null;
lastPlayer.Restart(quickRestart);
});
AddUntilStep("wait for player to be current", () => player.IsCurrentScreen());
if (quickRestart)
AddAssert("leaderboard not refetched", () => leaderboardRequestsHandled, () => Is.EqualTo(1));
else
AddAssert("leaderboard fetched twice", () => leaderboardRequestsHandled, () => Is.EqualTo(2));
}
/// <remarks>
/// Created for avoiding copy pasting code for the same steps.
/// </remarks>