DeleteServerUseCaseTests.cs 1.2 KB

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