4
0

DeleteAccessPointUseCaseTests.cs 1.3 KB

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