AddAccessPointUseCaseTests.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using NSubstitute;
  2. using RackPeek.Domain.Resources.Hardware;
  3. using RackPeek.Domain.Resources.Hardware.Models;
  4. using RackPeek.Domain.Resources.Hardware.AccessPoints;
  5. namespace Tests.Hardware.AccessPoints;
  6. public class AddAccessPointUseCaseTests
  7. {
  8. [Fact]
  9. public async Task ExecuteAsync_Adds_new_ap_when_not_exists()
  10. {
  11. // Arrange
  12. var repo = Substitute.For<IHardwareRepository>();
  13. repo.GetByNameAsync("ap01").Returns((RackPeek.Domain.Resources.Hardware.Models.Hardware?)null);
  14. var sut = new AddAccessPointUseCase(repo);
  15. // Act
  16. await sut.ExecuteAsync("ap01");
  17. // Assert
  18. await repo.Received(1).AddAsync(Arg.Is<AccessPoint>(ap =>
  19. ap.Name == "ap01"
  20. ));
  21. }
  22. [Fact]
  23. public async Task ExecuteAsync_Throws_if_ap_already_exists()
  24. {
  25. // Arrange
  26. var repo = Substitute.For<IHardwareRepository>();
  27. repo.GetByNameAsync("ap01").Returns(new AccessPoint { Name = "ap01" });
  28. var sut = new AddAccessPointUseCase(repo);
  29. // Act
  30. var ex = await Assert.ThrowsAsync<InvalidOperationException>(async () =>
  31. await sut.ExecuteAsync("ap01")
  32. );
  33. // Assert
  34. Assert.Equal("Access point 'ap01' already exists.", ex.Message);
  35. await repo.DidNotReceive().AddAsync(Arg.Any<AccessPoint>());
  36. }
  37. }