1
0

DispenserTest.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using Content.Client.Chemistry.UI;
  2. using Content.IntegrationTests.Tests.Interaction;
  3. using Content.Shared.Chemistry;
  4. using Content.Server.Chemistry.Components;
  5. using Content.Shared.Containers.ItemSlots;
  6. namespace Content.IntegrationTests.Tests.Chemistry;
  7. public sealed class DispenserTest : InteractionTest
  8. {
  9. /// <summary>
  10. /// Basic test that checks that a beaker can be inserted and ejected from a dispenser.
  11. /// </summary>
  12. [Test]
  13. public async Task InsertEjectBuiTest()
  14. {
  15. await SpawnTarget("ChemDispenser");
  16. ToggleNeedPower();
  17. // Insert beaker
  18. await InteractUsing("Beaker");
  19. Assert.That(Hands.ActiveHandEntity, Is.Null);
  20. // Open BUI
  21. await Interact();
  22. // Eject beaker via BUI.
  23. var ev = new ItemSlotButtonPressedEvent(SharedReagentDispenser.OutputSlotName);
  24. await SendBui(ReagentDispenserUiKey.Key, ev);
  25. // Beaker is back in the player's hands
  26. Assert.That(Hands.ActiveHandEntity, Is.Not.Null);
  27. AssertPrototype("Beaker", SEntMan.GetNetEntity(Hands.ActiveHandEntity));
  28. // Re-insert the beaker
  29. await Interact();
  30. Assert.That(Hands.ActiveHandEntity, Is.Null);
  31. // Re-eject using the button directly instead of sending a BUI event. This test is really just a test of the
  32. // bui/window helper methods.
  33. await ClickControl<ReagentDispenserWindow>(nameof(ReagentDispenserWindow.EjectButton));
  34. await RunTicks(5);
  35. Assert.That(Hands.ActiveHandEntity, Is.Not.Null);
  36. AssertPrototype("Beaker", SEntMan.GetNetEntity(Hands.ActiveHandEntity));
  37. }
  38. }