using Content.Shared.Clothing.Components; using Content.Shared.Clothing.EntitySystems; using Content.Shared.Inventory; using Robust.Shared.Containers; using Robust.Shared.GameObjects; namespace Content.IntegrationTests.Tests { [TestFixture] public sealed class DeleteInventoryTest { // Test that when deleting an entity with an InventoryComponent, // any equipped items also get deleted. [Test] public async Task Test() { await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; var testMap = await pair.CreateTestMap(); var entMgr = server.ResolveDependency(); var sysManager = server.ResolveDependency(); var coordinates = testMap.GridCoords; await server.WaitAssertion(() => { // Spawn everything. var invSystem = sysManager.GetEntitySystem(); var container = entMgr.SpawnEntity(null, coordinates); entMgr.EnsureComponent(container); entMgr.EnsureComponent(container); var child = entMgr.SpawnEntity(null, coordinates); var item = entMgr.EnsureComponent(child); sysManager.GetEntitySystem().SetSlots(child, SlotFlags.HEAD, item); // Equip item. Assert.That(invSystem.TryEquip(container, child, "head"), Is.True); // Delete parent. entMgr.DeleteEntity(container); // Assert that child item was also deleted. Assert.That(item.Deleted, Is.True); }); await pair.CleanReturnAsync(); } } }