AddServerUseCaseTests.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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 AddServerUseCaseTests
  7. {
  8. [Fact]
  9. public async Task ExecuteAsync_Adds_new_server_when_not_exists()
  10. {
  11. // Arrange
  12. var host = new UsecaseTestHost();
  13. var repo = host.HardwareRepo;
  14. repo.GetByNameAsync("node01").Returns((Hardware?)null);
  15. var sut = host.Get<AddServerUseCase>();
  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 host = new UsecaseTestHost();
  30. var repo = host.HardwareRepo;
  31. host.ResourceRepo.GetResourceKindAsync("node01").Returns("Server");
  32. var sut = host.Get<AddServerUseCase>();
  33. // Act
  34. var ex = await Assert.ThrowsAsync<ConflictException>(async () =>
  35. await sut.ExecuteAsync(
  36. "node01"
  37. )
  38. );
  39. // Assert
  40. await repo.DidNotReceive().AddAsync(Arg.Any<Server>());
  41. }
  42. }