using System.Collections.Generic; using System.Linq; using Content.IntegrationTests.Fixtures; using Content.Server.Administration.Logs; using Content.Server.GameTicking; using Content.Shared.Database; using Robust.Server.Player; using Robust.Shared.GameObjects; using Robust.Shared.Player; namespace Content.IntegrationTests.Tests.Administration.Logs; [TestFixture] [TestOf(typeof(AdminLogSystem))] public sealed class QueryTests : GameTest { public override PoolSettings PoolSettings => new() { AdminLogsEnabled = true, DummyTicker = false, Connected = true }; [Test] public async Task QuerySingleLog() { var pair = Pair; var server = pair.Server; var sSystems = server.ResolveDependency(); var sPlayers = server.ResolveDependency(); var sAdminLogSystem = server.ResolveDependency(); var sGamerTicker = sSystems.GetEntitySystem(); var date = DateTime.UtcNow; var guid = Guid.NewGuid(); ICommonSession player = default; await server.WaitPost(() => { player = sPlayers.Sessions.First(); sAdminLogSystem.Add(LogType.Unknown, $"{player.AttachedEntity:Entity} test log: {guid}"); }); var filter = new LogFilter { Round = sGamerTicker.RoundId, Search = guid.ToString(), Types = new HashSet { LogType.Unknown }, After = date, AnyPlayers = new[] { player.UserId.UserId } }; await PoolManager.WaitUntil(server, async () => { foreach (var _ in await sAdminLogSystem.All(filter)) { return true; } return false; }); } }