AddAccessPointUseCaseTests.cs 1.2 KB

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