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,56 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using RadicadeServer.DB;
|
||||
using RadicadeServer.RecNet.Accounts;
|
||||
using RadicadeServer.RecNet.Events;
|
||||
using RadicadeServer.RecNet.Rooms;
|
||||
using RadicadeServer.Utils;
|
||||
using Xunit;
|
||||
|
||||
namespace RadicadeServer.Tests;
|
||||
|
||||
public class MatchmakingRuntimeStateTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task RestartClearsBroadcastSourcesIncludingPreviouslyDeletedInstances()
|
||||
{
|
||||
var options = TestDbOptions.Create()
|
||||
.UseInMemoryDatabase(Guid.NewGuid().ToString()).Options;
|
||||
await using var db = new RecDBContext(options);
|
||||
db.RoomInstances.Add(new RoomInstance { roomInstanceId = 30895, roomId = 102, eventId = 9102 });
|
||||
db.Presences.Add(new RealPresence { playerId = 2, isOnline = true, roomInstance = 30895 });
|
||||
foreach (var (id, source) in new (long, long?)[] { (9102, 30895), (9103, 99999), (9104, null) })
|
||||
db.PlayerEvents.Add(new PlayerEventDB
|
||||
{
|
||||
PlayerEventId = id,
|
||||
CreatorPlayerId = 2,
|
||||
RoomId = 102,
|
||||
Name = "Broadcast test",
|
||||
Description = "Restart recovery",
|
||||
IsMultiInstance = true,
|
||||
DefaultBroadcastPermissions = 3,
|
||||
BroadcastingRoomInstanceId = source,
|
||||
StartTime = DateTime.UtcNow.AddMinutes(-5),
|
||||
EndTime = DateTime.UtcNow.AddHours(1)
|
||||
});
|
||||
await db.SaveChangesAsync();
|
||||
|
||||
await MatchmakingRuntimeState.ResetAsync(db);
|
||||
// A second startup must also be safe when there is no remaining runtime state.
|
||||
await MatchmakingRuntimeState.ResetAsync(db);
|
||||
|
||||
await using var verify = new RecDBContext(options);
|
||||
Assert.Empty(await verify.RoomInstances.ToListAsync());
|
||||
var presence = await verify.Presences.SingleAsync();
|
||||
Assert.False(presence.isOnline);
|
||||
Assert.Null(presence.roomInstance);
|
||||
var events = await verify.PlayerEvents.ToListAsync();
|
||||
Assert.Equal(3, events.Count);
|
||||
Assert.All(events, ev =>
|
||||
{
|
||||
Assert.Null(ev.BroadcastingRoomInstanceId);
|
||||
Assert.True(ev.IsMultiInstance);
|
||||
Assert.Equal(3, ev.DefaultBroadcastPermissions);
|
||||
Assert.Equal("Broadcast test", ev.Name);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user