DeleteSwitchUseCaseTests.cs 1.3 KB

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