ContrabandTest.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Content.Shared.Contraband;
  2. using Robust.Shared.GameObjects;
  3. using Robust.Shared.Prototypes;
  4. namespace Content.IntegrationTests.Tests;
  5. [TestFixture]
  6. public sealed class ContrabandTest
  7. {
  8. [Test]
  9. public async Task EntityShowDepartmentsAndJobs()
  10. {
  11. await using var pair = await PoolManager.GetServerClient();
  12. var client = pair.Client;
  13. var protoMan = client.ResolveDependency<IPrototypeManager>();
  14. var componentFactory = client.ResolveDependency<IComponentFactory>();
  15. await client.WaitAssertion(() =>
  16. {
  17. Assert.Multiple(() =>
  18. {
  19. foreach (var proto in protoMan.EnumeratePrototypes<EntityPrototype>())
  20. {
  21. if (proto.Abstract || pair.IsTestPrototype(proto))
  22. continue;
  23. if (!proto.TryGetComponent<ContrabandComponent>(out var contraband, componentFactory))
  24. continue;
  25. Assert.That(protoMan.TryIndex(contraband.Severity, out var severity, false),
  26. @$"{proto.ID} has a ContrabandComponent with a unknown severity.");
  27. if (!severity.ShowDepartmentsAndJobs)
  28. continue;
  29. Assert.That(contraband.AllowedDepartments.Count + contraband.AllowedJobs.Count, Is.Not.EqualTo(0),
  30. @$"{proto.ID} has a ContrabandComponent with ShowDepartmentsAndJobs but no allowed departments or jobs.");
  31. }
  32. });
  33. });
  34. await pair.CleanReturnAsync();
  35. }
  36. }