DescribeServerUseCaseTests.cs 2.0 KB

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