AddUpsUseCaseTests.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using NSubstitute;
  2. using RackPeek.Domain.Resources.Hardware;
  3. using RackPeek.Domain.Resources.Hardware.Models;
  4. using RackPeek.Domain.Resources.Hardware.UpsUnits;
  5. namespace Tests.Hardware.Ups;
  6. public class AddUpsUseCaseTests
  7. {
  8. [Fact]
  9. public async Task ExecuteAsync_Adds_new_ups_when_not_exists()
  10. {
  11. var repo = Substitute.For<IHardwareRepository>();
  12. repo.GetByNameAsync("ups01").Returns((RackPeek.Domain.Resources.Hardware.Models.Hardware?)null);
  13. var sut = new AddUpsUseCase(repo);
  14. await sut.ExecuteAsync("ups01");
  15. await repo.Received(1).AddAsync(Arg.Is<RackPeek.Domain.Resources.Hardware.Models.Ups>(u =>
  16. u.Name == "ups01"
  17. ));
  18. }
  19. [Fact]
  20. public async Task ExecuteAsync_Throws_if_ups_already_exists()
  21. {
  22. var repo = Substitute.For<IHardwareRepository>();
  23. repo.GetByNameAsync("ups01").Returns(new RackPeek.Domain.Resources.Hardware.Models.Ups { Name = "ups01" });
  24. var sut = new AddUpsUseCase(repo);
  25. var ex = await Assert.ThrowsAsync<InvalidOperationException>(async () =>
  26. await sut.ExecuteAsync("ups01")
  27. );
  28. Assert.Equal("UPS 'ups01' already exists.", ex.Message);
  29. await repo.DidNotReceive().AddAsync(Arg.Any<RackPeek.Domain.Resources.Hardware.Models.Ups>());
  30. }
  31. }