DeleteUpsUseCaseTests.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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 DeleteUpsUseCaseTests
  7. {
  8. [Fact]
  9. public async Task ExecuteAsync_Deletes_ups_when_exists()
  10. {
  11. var repo = Substitute.For<IHardwareRepository>();
  12. repo.GetByNameAsync("ups01").Returns(new RackPeek.Domain.Resources.Hardware.Models.Ups { Name = "ups01" });
  13. var sut = new DeleteUpsUseCase(repo);
  14. await sut.ExecuteAsync("ups01");
  15. await repo.Received(1).DeleteAsync("ups01");
  16. }
  17. [Fact]
  18. public async Task ExecuteAsync_Throws_if_ups_not_found()
  19. {
  20. var repo = Substitute.For<IHardwareRepository>();
  21. repo.GetByNameAsync("ups01").Returns((RackPeek.Domain.Resources.Hardware.Models.Hardware?)null);
  22. var sut = new DeleteUpsUseCase(repo);
  23. var ex = await Assert.ThrowsAsync<InvalidOperationException>(async () =>
  24. await sut.ExecuteAsync("ups01")
  25. );
  26. Assert.Equal("UPS 'ups01' not found.", ex.Message);
  27. await repo.DidNotReceive().DeleteAsync(Arg.Any<string>());
  28. }
  29. }