major cleanup of roboisseur test

This commit is contained in:
deltanedas 2025-03-02 23:55:40 +00:00
parent c7a83857b4
commit c978732b91
1 changed files with 20 additions and 40 deletions

View File

@ -1,8 +1,6 @@
using System.Linq;
using Content.Server.Roboisseur.Roboisseur;
using Content.Shared.Item;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests._DV;
@ -12,57 +10,39 @@ namespace Content.IntegrationTests.Tests._DV;
public sealed class RoboisseurTest
{
[Test]
public async Task AllRoboisseurItemsExist()
public async Task AllRoboisseurRewardsAreItems()
{
await using var pair = await PoolManager.GetServerClient();
var server = pair.Server;
// Per RobustIntegrationTest.cs, wait until state is settled to access it.
await server.WaitIdleAsync();
var mapManager = server.ResolveDependency<IMapManager>();
var prototypeManager = server.ResolveDependency<IPrototypeManager>();
var entityManager = server.ResolveDependency<IEntityManager>();
var entitySystemManager = server.ResolveDependency<IEntitySystemManager>();
var protoMan = server.ResolveDependency<IPrototypeManager>();
var factory = server.ResolveDependency<IComponentFactory>();
var roboisseurSystem = entitySystemManager.GetEntitySystem<RoboisseurSystem>();
var roboisseurComponent = new RoboisseurComponent();
var testMap = await pair.CreateTestMap();
// TODO: spawn the actual prototype and get the component from it
var comp = new RoboisseurComponent();
await server.WaitAssertion(() =>
{
var allProtos = roboisseurComponent.Tier2Protos.Concat(roboisseurComponent.Tier3Protos)
.Concat(roboisseurComponent.RobossuierRewards);
var enumerable = allProtos as string[] ?? allProtos.ToArray();
var blacklistedProtos = roboisseurComponent.BlacklistedProtos;
var coordinates = testMap.GridCoords;
Assert.That(enumerable.Any(), "Roboisseur has no valid prototypes!");
foreach (var proto in enumerable)
Assert.Multiple(() =>
{
Assert.That(prototypeManager.TryIndex(proto, out var _),
$"Roboisseur has invalid prototype {proto}!");
var spawned = entityManager.SpawnEntity(proto, coordinates);
Assert.That(entityManager.HasComponent<ItemComponent>(spawned),
$"Roboisseur can request non-item {proto}");
}
foreach (var proto in blacklistedProtos)
{
Assert.That(prototypeManager.TryIndex(proto, out var _),
$"Roboisseur has invalid prototype {proto} in blacklist!");
}
// Because Server/Client pairs can be re-used between Tests, we
// need to clean up anything that might affect other tests,
// otherwise this pair cannot be considered clean, and the
// CleanReturnAsync call would need to be removed.
mapManager.DeleteMap(testMap.MapId);
Check(comp.Tier2Protos, protoMan, factory);
Check(comp.Tier3Protos, protoMan, factory);
Check(comp.RobossuierRewards, protoMan, factory);
});
});
await pair.CleanReturnAsync();
}
private void Check(List<EntProtoId> protos, IPrototypeManager protoMan, IComponentFactory factory)
{
foreach (var id in protos)
{
var proto = protoMan.Index(id);
var isItem = proto.TryGetComponent<ItemComponent>(out _, factory);
Assert.That(isItem, $"Roboisseur can request non-item {id}");
}
}
}