using NSubstitute; using RackPeek.Domain.Resources.Hardware; using RackPeek.Domain.Resources.Hardware.Switches; using RackPeek.Domain.Resources.Models; namespace Tests.HardwareResources.Switches; public class GetSwitchesUseCaseTests { [Fact] public async Task ExecuteAsync_Returns_only_switches() { // Arrange var repo = Substitute.For(); repo.GetAllAsync().Returns([ new Switch { Name = "sw01" }, new Server { Name = "node01" }, new Switch { Name = "sw02" } ]); var sut = new GetSwitchesUseCase(repo); // Act var result = await sut.ExecuteAsync(); // Assert Assert.Equal(2, result.Count); Assert.All(result, s => Assert.IsType(s)); Assert.Contains(result, s => s.Name == "sw01"); Assert.Contains(result, s => s.Name == "sw02"); } [Fact] public async Task ExecuteAsync_Returns_empty_list_when_no_switches_exist() { // Arrange var repo = Substitute.For(); repo.GetAllAsync().Returns([ new Server { Name = "node01" } ]); var sut = new GetSwitchesUseCase(repo); // Act var result = await sut.ExecuteAsync(); // Assert Assert.Empty(result); } }