1
0

DeleteInventoryTest.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using Content.Shared.Clothing.Components;
  2. using Content.Shared.Clothing.EntitySystems;
  3. using Content.Shared.Inventory;
  4. using Robust.Shared.Containers;
  5. using Robust.Shared.GameObjects;
  6. namespace Content.IntegrationTests.Tests
  7. {
  8. [TestFixture]
  9. public sealed class DeleteInventoryTest
  10. {
  11. // Test that when deleting an entity with an InventoryComponent,
  12. // any equipped items also get deleted.
  13. [Test]
  14. public async Task Test()
  15. {
  16. await using var pair = await PoolManager.GetServerClient();
  17. var server = pair.Server;
  18. var testMap = await pair.CreateTestMap();
  19. var entMgr = server.ResolveDependency<IEntityManager>();
  20. var sysManager = server.ResolveDependency<IEntitySystemManager>();
  21. var coordinates = testMap.GridCoords;
  22. await server.WaitAssertion(() =>
  23. {
  24. // Spawn everything.
  25. var invSystem = sysManager.GetEntitySystem<InventorySystem>();
  26. var container = entMgr.SpawnEntity(null, coordinates);
  27. entMgr.EnsureComponent<InventoryComponent>(container);
  28. entMgr.EnsureComponent<ContainerManagerComponent>(container);
  29. var child = entMgr.SpawnEntity(null, coordinates);
  30. var item = entMgr.EnsureComponent<ClothingComponent>(child);
  31. sysManager.GetEntitySystem<ClothingSystem>().SetSlots(child, SlotFlags.HEAD, item);
  32. // Equip item.
  33. Assert.That(invSystem.TryEquip(container, child, "head"), Is.True);
  34. // Delete parent.
  35. entMgr.DeleteEntity(container);
  36. // Assert that child item was also deleted.
  37. Assert.That(item.Deleted, Is.True);
  38. });
  39. await pair.CleanReturnAsync();
  40. }
  41. }
  42. }