DeleteServerUseCaseTests.cs 1.2 KB

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