AddNicUseCaseTests.cs 1.9 KB

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