DeleteSwitchUseCaseTests.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using NSubstitute;
  2. using RackPeek.Domain.Helpers;
  3. using RackPeek.Domain.Resources.Hardware.Switches;
  4. using RackPeek.Domain.Resources.Models;
  5. namespace Tests.HardwareResources.Switches;
  6. public class DeleteSwitchUseCaseTests
  7. {
  8. [Fact]
  9. public async Task ExecuteAsync_Deletes_switch_when_exists()
  10. {
  11. // Arrange
  12. var host = new UsecaseTestHost();
  13. var repo = host.HardwareRepo;
  14. repo.GetByNameAsync("sw01").Returns(new Switch { Name = "sw01" });
  15. var sut = host.Get<DeleteSwitchUseCase>();
  16. // Act
  17. await sut.ExecuteAsync(
  18. "sw01"
  19. );
  20. // Assert
  21. await repo.Received(1).DeleteAsync("sw01");
  22. }
  23. [Fact]
  24. public async Task ExecuteAsync_Throws_if_switch_not_found()
  25. {
  26. // Arrange
  27. var host = new UsecaseTestHost();
  28. var repo = host.HardwareRepo;
  29. repo.GetByNameAsync("sw01").Returns((Hardware?)null);
  30. var sut = host.Get<DeleteSwitchUseCase>();
  31. // Act
  32. var ex = await Assert.ThrowsAsync<NotFoundException>(async () =>
  33. await sut.ExecuteAsync(
  34. "sw01"
  35. )
  36. );
  37. // Assert
  38. Assert.Equal("Switch 'sw01' not found.", ex.Message);
  39. await repo.DidNotReceive().DeleteAsync(Arg.Any<string>());
  40. }
  41. }