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:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user