AddNicUseCaseTests.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using NSubstitute;
  2. using RackPeek.Domain.Helpers;
  3. using RackPeek.Domain.Resources.Hardware;
  4. using RackPeek.Domain.Resources.Hardware.Servers.Nics;
  5. using RackPeek.Domain.Resources.Models;
  6. namespace Tests.HardwareResources;
  7. public class AddNicUseCaseTests
  8. {
  9. [Fact]
  10. public async Task ExecuteAsync_Adds_nic_when_server_exists()
  11. {
  12. var repo = Substitute.For<IHardwareRepository>();
  13. var server = new Server
  14. {
  15. Name = "node01",
  16. Nics = new List<Nic>()
  17. };
  18. repo.GetByNameAsync("node01").Returns(server);
  19. var sut = new AddNicUseCase(repo);
  20. await sut.ExecuteAsync("node01", "rj45", 10000, 2);
  21. Assert.Single(server.Nics);
  22. Assert.Equal("rj45", server.Nics[0].Type);
  23. Assert.Equal(10000, server.Nics[0].Speed!.Value);
  24. Assert.Equal(2, server.Nics[0].Ports!.Value);
  25. await repo.Received(1).UpdateAsync(Arg.Is<Server>(s =>
  26. s.Nics.Count == 1 &&
  27. s.Nics[0].Type == "rj45"
  28. ));
  29. }
  30. [Fact]
  31. public async Task ExecuteAsync_Initializes_list_when_null()
  32. {
  33. var repo = Substitute.For<IHardwareRepository>();
  34. var server = new Server { Name = "node01", Nics = null };
  35. repo.GetByNameAsync("node01").Returns(server);
  36. var sut = new AddNicUseCase(repo);
  37. await sut.ExecuteAsync("node01", "SFP+", 10000, 1);
  38. Assert.NotNull(server.Nics);
  39. Assert.Single(server.Nics);
  40. await repo.Received(1).UpdateAsync(Arg.Any<Server>());
  41. }
  42. [Fact]
  43. public async Task ExecuteAsync_throws_when_server_not_found()
  44. {
  45. var repo = Substitute.For<IHardwareRepository>();
  46. repo.GetByNameAsync("node01")
  47. .Returns((Hardware?)null);
  48. var sut = new AddNicUseCase(repo);
  49. var ex = await Assert.ThrowsAsync<NotFoundException>(async () =>
  50. await sut.ExecuteAsync("node01", "SFP+", 10000, 1)
  51. );
  52. // Assert
  53. await repo.DidNotReceive().UpdateAsync(Arg.Any<Server>());
  54. }
  55. }