mirror of
https://github.com/JogmansonReal/Radicade.git
synced 2026-10-25 23:18:56 -07:00
127 lines
3.5 KiB
C#
127 lines
3.5 KiB
C#
using RadicadeServer.API.Events;
|
|
using RadicadeServer.RecNet.Enums;
|
|
using RadicadeServer.RecNet.Events;
|
|
using Xunit;
|
|
|
|
namespace RadicadeServer.Tests;
|
|
|
|
/// <summary>
|
|
/// Tests the filtering rules behind the game's event endpoints:
|
|
/// - /api/playerevents/v1/search (public, not-ended events; name/description match)
|
|
/// - /api/playerevents/v1/room/{roomId} (events hosted in that room)
|
|
/// </summary>
|
|
public class PlayerEventQueriesTests
|
|
{
|
|
private static PlayerEventDB MakeEvent(
|
|
long id,
|
|
long roomId,
|
|
string name = "Launch Party",
|
|
DateTime? start = null,
|
|
DateTime? end = null,
|
|
Accessibility accessibility = Accessibility.Public)
|
|
{
|
|
var startTime = start ?? DateTime.UtcNow.AddHours(1);
|
|
return new PlayerEventDB
|
|
{
|
|
PlayerEventId = id,
|
|
Name = name,
|
|
Description = "A test event",
|
|
ImageName = "",
|
|
StartTime = startTime,
|
|
EndTime = end ?? startTime.AddHours(2),
|
|
CreatorPlayerId = 42,
|
|
AttendeeCount = 1,
|
|
RoomId = roomId,
|
|
Accessibility = accessibility
|
|
};
|
|
}
|
|
|
|
[Fact]
|
|
public void CreatedPublicEvent_AppearsInSearchResults()
|
|
{
|
|
var ev = MakeEvent(1, 100, name: "Launch Party");
|
|
|
|
var results = PlayerEventQueries.Search(new[] { ev }, null, DateTime.UtcNow);
|
|
|
|
Assert.Single(results);
|
|
Assert.Equal(1, results[0].PlayerEventId);
|
|
}
|
|
|
|
[Fact]
|
|
public void CreatedEvent_AppearsInRoomResults()
|
|
{
|
|
var ev = MakeEvent(1, 100);
|
|
|
|
var results = PlayerEventQueries.InRoom(new[] { ev }, 100);
|
|
|
|
Assert.Single(results);
|
|
Assert.Equal(1, results[0].PlayerEventId);
|
|
}
|
|
|
|
[Fact]
|
|
public void Search_MatchesNameCaseInsensitively()
|
|
{
|
|
var ev = MakeEvent(1, 100, name: "Launch Party");
|
|
|
|
var results = PlayerEventQueries.Search(new[] { ev }, "launch", DateTime.UtcNow);
|
|
|
|
Assert.Single(results);
|
|
}
|
|
|
|
[Fact]
|
|
public void Search_MatchesDescription()
|
|
{
|
|
var ev = MakeEvent(1, 100, name: "Other");
|
|
ev.Description = "A test event";
|
|
|
|
var results = PlayerEventQueries.Search(new[] { ev }, "TEST", DateTime.UtcNow);
|
|
|
|
Assert.Single(results);
|
|
}
|
|
|
|
[Fact]
|
|
public void Search_ExcludesEndedEvents()
|
|
{
|
|
var ev = MakeEvent(1, 100, end: DateTime.UtcNow.AddHours(-1));
|
|
|
|
var results = PlayerEventQueries.Search(new[] { ev }, null, DateTime.UtcNow);
|
|
|
|
Assert.Empty(results);
|
|
}
|
|
|
|
[Fact]
|
|
public void Search_ExcludesPrivateEvents()
|
|
{
|
|
var ev = MakeEvent(1, 100, accessibility: Accessibility.Private);
|
|
|
|
var results = PlayerEventQueries.Search(new[] { ev }, null, DateTime.UtcNow);
|
|
|
|
Assert.Empty(results);
|
|
}
|
|
|
|
[Fact]
|
|
public void RoomEvents_OnlyReturnEventsForThatRoom()
|
|
{
|
|
var inRoom = MakeEvent(1, 100);
|
|
var otherRoom = MakeEvent(2, 200);
|
|
|
|
var results = PlayerEventQueries.InRoom(new[] { inRoom, otherRoom }, 100);
|
|
|
|
Assert.Single(results);
|
|
Assert.Equal(1, results[0].PlayerEventId);
|
|
}
|
|
|
|
[Fact]
|
|
public void Search_ReturnsNewestEventsFirst()
|
|
{
|
|
var later = MakeEvent(1, 100, start: DateTime.UtcNow.AddHours(3));
|
|
var sooner = MakeEvent(2, 100, start: DateTime.UtcNow.AddHours(1));
|
|
|
|
var results = PlayerEventQueries.Search(new[] { sooner, later }, null, DateTime.UtcNow);
|
|
|
|
Assert.Equal(2, results.Count);
|
|
Assert.Equal(1, results[0].PlayerEventId);
|
|
Assert.Equal(2, results[1].PlayerEventId);
|
|
}
|
|
}
|