mirror of
https://github.com/osukey/osukey.git
synced 2025-07-02 00:40:09 +09:00
Add test coverage for loading process on channel join
This commit is contained in:
@ -4,6 +4,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using JetBrains.Annotations;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
@ -18,6 +19,7 @@ using osu.Game.Online.API;
|
|||||||
using osu.Game.Online.API.Requests;
|
using osu.Game.Online.API.Requests;
|
||||||
using osu.Game.Online.Chat;
|
using osu.Game.Online.Chat;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
|
using osu.Game.Overlays.Chat;
|
||||||
using osu.Game.Overlays.Chat.Selection;
|
using osu.Game.Overlays.Chat.Selection;
|
||||||
using osu.Game.Overlays.Chat.Tabs;
|
using osu.Game.Overlays.Chat.Tabs;
|
||||||
using osu.Game.Users;
|
using osu.Game.Users;
|
||||||
@ -41,6 +43,9 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
private Channel channel2 => channels[1];
|
private Channel channel2 => channels[1];
|
||||||
private Channel channel3 => channels[2];
|
private Channel channel3 => channels[2];
|
||||||
|
|
||||||
|
[CanBeNull]
|
||||||
|
private Func<Channel, List<Message>> onGetMessages;
|
||||||
|
|
||||||
[Resolved]
|
[Resolved]
|
||||||
private GameHost host { get; set; }
|
private GameHost host { get; set; }
|
||||||
|
|
||||||
@ -79,6 +84,8 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
AddStep("register request handling", () =>
|
AddStep("register request handling", () =>
|
||||||
{
|
{
|
||||||
|
onGetMessages = null;
|
||||||
|
|
||||||
((DummyAPIAccess)API).HandleRequest = req =>
|
((DummyAPIAccess)API).HandleRequest = req =>
|
||||||
{
|
{
|
||||||
switch (req)
|
switch (req)
|
||||||
@ -102,6 +109,12 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
case GetMessagesRequest getMessages:
|
||||||
|
var messages = onGetMessages?.Invoke(getMessages.Channel);
|
||||||
|
if (messages != null)
|
||||||
|
getMessages.TriggerSuccess(messages);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -122,14 +135,37 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestSelectingChannelClosesSelector()
|
public void TestChannelSelection()
|
||||||
{
|
{
|
||||||
AddAssert("Selector is visible", () => chatOverlay.SelectionOverlayState == Visibility.Visible);
|
AddAssert("Selector is visible", () => chatOverlay.SelectionOverlayState == Visibility.Visible);
|
||||||
|
AddStep("Setup get message response", () => onGetMessages = channel =>
|
||||||
|
{
|
||||||
|
if (channel == channel1)
|
||||||
|
{
|
||||||
|
return new List<Message>
|
||||||
|
{
|
||||||
|
new Message(1)
|
||||||
|
{
|
||||||
|
ChannelId = channel1.Id,
|
||||||
|
Content = "hello from channel 1!",
|
||||||
|
Sender = new User
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
Username = "test_user"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
AddStep("Join channel 1", () => channelManager.JoinChannel(channel1));
|
AddStep("Join channel 1", () => channelManager.JoinChannel(channel1));
|
||||||
AddStep("Switch to channel 1", () => clickDrawable(chatOverlay.TabMap[channel1]));
|
AddStep("Switch to channel 1", () => clickDrawable(chatOverlay.TabMap[channel1]));
|
||||||
|
|
||||||
AddAssert("Current channel is channel 1", () => currentChannel == channel1);
|
AddAssert("Current channel is channel 1", () => currentChannel == channel1);
|
||||||
|
AddUntilStep("Loading spinner hidden", () => chatOverlay.ChildrenOfType<LoadingSpinner>().All(spinner => !spinner.IsPresent));
|
||||||
|
AddAssert("Channel message shown", () => chatOverlay.ChildrenOfType<ChatLine>().Count() == 1);
|
||||||
AddAssert("Channel selector was closed", () => chatOverlay.SelectionOverlayState == Visibility.Hidden);
|
AddAssert("Channel selector was closed", () => chatOverlay.SelectionOverlayState == Visibility.Hidden);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,13 +8,13 @@ namespace osu.Game.Online.API.Requests
|
|||||||
{
|
{
|
||||||
public class GetMessagesRequest : APIRequest<List<Message>>
|
public class GetMessagesRequest : APIRequest<List<Message>>
|
||||||
{
|
{
|
||||||
private readonly Channel channel;
|
public readonly Channel Channel;
|
||||||
|
|
||||||
public GetMessagesRequest(Channel channel)
|
public GetMessagesRequest(Channel channel)
|
||||||
{
|
{
|
||||||
this.channel = channel;
|
Channel = channel;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override string Target => $@"chat/channels/{channel.Id}/messages";
|
protected override string Target => $@"chat/channels/{Channel.Id}/messages";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user