UpdateNicUseCaseTests.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. using Xunit;
  6. namespace Tests.Hardware;
  7. public class UpdateNicUseCaseTests
  8. {
  9. [Fact]
  10. public async Task ExecuteAsync_Updates_nic_when_index_valid()
  11. {
  12. var repo = Substitute.For<IHardwareRepository>();
  13. var server = new Server
  14. {
  15. Name = "node01",
  16. Nics = new List<Nic>
  17. {
  18. new Nic { Type = "10GBase-T", Speed = 10000, Ports = 2 }
  19. }
  20. };
  21. repo.GetByNameAsync("node01").Returns(server);
  22. var sut = new UpdateNicUseCase(repo);
  23. await sut.ExecuteAsync("node01", 0, "SFP+", 10000, 1);
  24. Assert.Equal("SFP+", server.Nics[0].Type);
  25. Assert.Equal(10000, server.Nics[0].Speed!.Value);
  26. Assert.Equal(1, server.Nics[0].Ports!.Value);
  27. await repo.Received(1).UpdateAsync(Arg.Any<Server>());
  28. }
  29. [Fact]
  30. public async Task ExecuteAsync_Throws_when_index_out_of_range()
  31. {
  32. var repo = Substitute.For<IHardwareRepository>();
  33. var server = new Server
  34. {
  35. Name = "node01",
  36. Nics = new List<Nic> { new Nic() }
  37. };
  38. repo.GetByNameAsync("node01").Returns(server);
  39. var sut = new UpdateNicUseCase(repo);
  40. await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() =>
  41. sut.ExecuteAsync("node01", 1, "SFP+", 10000, 1));
  42. await repo.DidNotReceive().UpdateAsync(Arg.Any<Server>());
  43. }
  44. [Fact]
  45. public async Task ExecuteAsync_Does_nothing_when_server_not_found()
  46. {
  47. var repo = Substitute.For<IHardwareRepository>();
  48. repo.GetByNameAsync("node01")
  49. .Returns((RackPeek.Domain.Resources.Hardware.Models.Hardware?)null);
  50. var sut = new UpdateNicUseCase(repo);
  51. await sut.ExecuteAsync("node01", 0, "SFP+", 10000, 1);
  52. await repo.DidNotReceive().UpdateAsync(Arg.Any<Server>());
  53. }
  54. }