UpdateNicUseCaseTests.cs 2.1 KB

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