// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; using System.Collections.Generic; using osu.Framework.Graphics.Containers; using osu.Game.Overlays.Dashboard.Friends; using osu.Framework.Graphics; using osu.Game.Users; using osu.Game.Overlays; using osu.Framework.Allocation; using NUnit.Framework; using osu.Game.Online.API; namespace osu.Game.Tests.Visual.Online { public class TestSceneFriendDisplay : OsuTestScene { public override IReadOnlyList RequiredTypes => new[] { typeof(FriendDisplay), typeof(FriendOnlineStreamControl), typeof(UserListToolbar) }; protected override bool UseOnlineAPI => true; [Cached] private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Purple); private TestFriendDisplay display; [SetUp] public void Setup() => Schedule(() => { Child = new BasicScrollContainer { RelativeSizeAxes = Axes.Both, Child = display = new TestFriendDisplay() }; }); [Test] public void TestOffline() { AddStep("Populate", () => display.Users = getUsers()); } [Test] public void TestOnline() { AddStep("Fetch online", () => display?.Fetch()); } private List getUsers() => new List { new User { Username = "flyte", Id = 3103765, IsOnline = true, CurrentModeRank = 1111, Country = new Country { FlagName = "JP" }, CoverUrl = "https://osu.ppy.sh/images/headers/profile-covers/c6.jpg" }, new User { Username = "peppy", Id = 2, IsOnline = false, CurrentModeRank = 2222, Country = new Country { FlagName = "AU" }, CoverUrl = "https://osu.ppy.sh/images/headers/profile-covers/c3.jpg", IsSupporter = true, SupportLevel = 3, }, new User { Username = "Evast", Id = 8195163, Country = new Country { FlagName = "BY" }, CoverUrl = "https://assets.ppy.sh/user-profile-covers/8195163/4a8e2ad5a02a2642b631438cfa6c6bd7e2f9db289be881cb27df18331f64144c.jpeg", IsOnline = false, LastVisit = DateTimeOffset.Now } }; private class TestFriendDisplay : FriendDisplay { public void Fetch() { base.APIStateChanged(API, APIState.Online); } public override void APIStateChanged(IAPIProvider api, APIState state) { } } } }