GetServersUseCaseTests.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using NSubstitute;
  2. using RackPeek.Domain.Resources.Hardware;
  3. using RackPeek.Domain.Resources.Hardware.Servers;
  4. using RackPeek.Domain.Resources.Models;
  5. namespace Tests.HardwareResources;
  6. public class GetServersUseCaseTests
  7. {
  8. [Fact]
  9. public async Task ExecuteAsync_Returns_only_servers()
  10. {
  11. // Arrange
  12. var repo = Substitute.For<IHardwareRepository>();
  13. repo.GetAllAsync().Returns(new List<Hardware>
  14. {
  15. new Server { Name = "server1" },
  16. new Desktop { Name = "desktop1" },
  17. new Server { Name = "server2" }
  18. });
  19. var sut = new GetServersUseCase(repo);
  20. // Act
  21. var servers = await sut.ExecuteAsync();
  22. // Assert
  23. Assert.Equal(2, servers.Count);
  24. Assert.All(servers, s => Assert.IsType<Server>(s));
  25. Assert.Contains(servers, s => s.Name == "server1");
  26. Assert.Contains(servers, s => s.Name == "server2");
  27. }
  28. [Fact]
  29. public async Task ExecuteAsync_Returns_empty_when_no_servers()
  30. {
  31. // Arrange
  32. var repo = Substitute.For<IHardwareRepository>();
  33. repo.GetAllAsync().Returns(new List<Hardware>
  34. {
  35. new Desktop { Name = "desktop1" }
  36. });
  37. var sut = new GetServersUseCase(repo);
  38. // Act
  39. var servers = await sut.ExecuteAsync();
  40. // Assert
  41. Assert.Empty(servers);
  42. }
  43. }