Files
tbd-station-14/Content.IntegrationTests/Tests/FollowerSystemTest.cs
Tayrtahn cfc0247e5c Code Cleanup: Integration Tests (#29584)
* Cleanup PuddleTest

* Cleanup GravityGridTest

* Cleanup PowerTest

* Cleanup SaveLoadMapTest

* Cleanup Body tests

* Cleanup ContainerOcclusionTest

* Cleanup AirlockTest

* Cleanup DamageableTest

* Cleanup EntityTest

* Cleanup FluidSpillTest

* Cleanup FollowerSystemTest

* Cleanup HandCuffTest

* Cleanup InteractionSystemTests

* Cleanup InRangeUnobstructed

* Cleanup SimplePredictReconcileTest

* Cleanup PostMapInitTest

* Cleanup SalvageTest

* Cleanup SaveLoadSaveTest

* Cleanup ShuttleTest

* Cleanup MaterialArbitrageTest

* Cleanup PrototypeSaveTest

* Fix ShuttleTest

* Bunch of small ones

* Move JobTests to Station directory

* More small fixes

* Cleanup InteractionTest.Helpers
Had to change a method signature, so some callers were modified too.

* Missed one
2024-07-03 10:01:37 +10:00

50 lines
1.8 KiB
C#

using Content.Server.GameTicking;
using Content.Shared.Follower;
using Robust.Shared.GameObjects;
using Robust.Shared.Log;
using Robust.Shared.Map;
namespace Content.IntegrationTests.Tests;
[TestFixture, TestOf(typeof(FollowerSystem))]
public sealed class FollowerSystemTest
{
/// <summary>
/// This test ensures that deleting a map while an entity follows another doesn't throw any exceptions.
/// </summary>
[Test]
public async Task FollowerMapDeleteTest()
{
await using var pair = await PoolManager.GetServerClient();
var server = pair.Server;
var entMan = server.ResolveDependency<IEntityManager>();
var mapMan = server.ResolveDependency<IMapManager>();
var sysMan = server.ResolveDependency<IEntitySystemManager>();
var logMan = server.ResolveDependency<ILogManager>();
var mapSys = server.System<SharedMapSystem>();
var logger = logMan.RootSawmill;
await server.WaitPost(() =>
{
var followerSystem = sysMan.GetEntitySystem<FollowerSystem>();
// Create a map to spawn the observers on.
mapSys.CreateMap(out var map);
// Spawn an observer to be followed.
var followed = entMan.SpawnEntity(GameTicker.ObserverPrototypeName, new MapCoordinates(0, 0, map));
logger.Info($"Spawned followed observer: {entMan.ToPrettyString(followed)}");
// Spawn an observer to follow another observer.
var follower = entMan.SpawnEntity(GameTicker.ObserverPrototypeName, new MapCoordinates(0, 0, map));
logger.Info($"Spawned follower observer: {entMan.ToPrettyString(follower)}");
followerSystem.StartFollowingEntity(follower, followed);
entMan.DeleteEntity(mapSys.GetMap(map));
});
await pair.CleanReturnAsync();
}
}