4
0

AddServerUseCaseTests.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using NSubstitute;
  2. using RackPeek.Domain.Helpers;
  3. using RackPeek.Domain.Resources.Hardware;
  4. using RackPeek.Domain.Resources.Hardware.Models;
  5. using RackPeek.Domain.Resources.Hardware.Servers;
  6. namespace Tests.HardwareResources;
  7. public class AddServerUseCaseTests
  8. {
  9. [Fact]
  10. public async Task ExecuteAsync_Adds_new_server_when_not_exists()
  11. {
  12. // Arrange
  13. var repo = Substitute.For<IHardwareRepository>();
  14. repo.GetByNameAsync("node01").Returns((Hardware?)null);
  15. var sut = new AddServerUseCase(repo);
  16. // Act
  17. await sut.ExecuteAsync(
  18. "node01"
  19. );
  20. // Assert
  21. await repo.Received(1).AddAsync(Arg.Is<Server>(s =>
  22. s.Name == "node01"
  23. ));
  24. }
  25. [Fact]
  26. public async Task ExecuteAsync_Throws_if_server_already_exists()
  27. {
  28. // Arrange
  29. var repo = Substitute.For<IHardwareRepository>();
  30. repo.GetByNameAsync("node01").Returns(new Server { Name = "node01" });
  31. var sut = new AddServerUseCase(repo);
  32. // Act
  33. var ex = await Assert.ThrowsAsync<ConflictException>(async () =>
  34. await sut.ExecuteAsync(
  35. "node01"
  36. )
  37. );
  38. // Assert
  39. await repo.DidNotReceive().AddAsync(Arg.Any<Server>());
  40. }
  41. }