DescribeServerUseCaseTests.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using NSubstitute;
  2. using RackPeek.Domain.Resources.Hardware;
  3. using RackPeek.Domain.Resources.Hardware.Models;
  4. using RackPeek.Domain.Resources.Hardware.Server;
  5. namespace Tests.Hardware;
  6. public class DescribeServerUseCaseTests
  7. {
  8. [Fact]
  9. public async Task ExecuteAsync_Returns_description_when_server_exists()
  10. {
  11. // Arrange
  12. var repo = Substitute.For<IHardwareRepository>();
  13. repo.GetByNameAsync("node01").Returns(new Server
  14. {
  15. Name = "node01",
  16. Ipmi = true,
  17. Cpus = new List<Cpu>
  18. {
  19. new() { Model = "Xeon", Cores = 4, Threads = 8 },
  20. new() { Model = "Xeon", Cores = 4, Threads = 8 }
  21. },
  22. Ram = new Ram { Size = 32 },
  23. Drives = new List<Drive>
  24. {
  25. new() { Type = "ssd", Size = 256 },
  26. new() { Type = "hdd", Size = 2048 }
  27. },
  28. Nics = new List<Nic>
  29. {
  30. new() { Speed = 10, Ports = 2 }
  31. }
  32. });
  33. var sut = new DescribeServerUseCase(repo);
  34. // Act
  35. var description = await sut.ExecuteAsync("node01");
  36. // Assert
  37. Assert.NotNull(description);
  38. Assert.Equal("node01", description!.Name);
  39. Assert.Equal("2× Xeon", description.CpuSummary);
  40. Assert.Equal(8, description.TotalCores);
  41. Assert.Equal(16, description.TotalThreads);
  42. Assert.Equal(32, description.RamGb);
  43. Assert.Equal(2304, description.TotalStorageGb);
  44. Assert.Equal(2, description.NicPorts);
  45. Assert.True(description.Ipmi);
  46. }
  47. [Fact]
  48. public async Task ExecuteAsync_Returns_null_when_server_not_found()
  49. {
  50. // Arrange
  51. var repo = Substitute.For<IHardwareRepository>();
  52. repo.GetByNameAsync("node01").Returns((RackPeek.Domain.Resources.Hardware.Models.Hardware?)null);
  53. var sut = new DescribeServerUseCase(repo);
  54. // Act
  55. var description = await sut.ExecuteAsync("node01");
  56. // Assert
  57. Assert.Null(description);
  58. }
  59. }