DeleteServerUseCaseTests.cs 1.2 KB

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