mirror of
https://github.com/JogmansonReal/Radicade.git
synced 2026-10-25 23:18:56 -07:00
Radicade Public Code
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user