AddUpsUseCaseTests.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using NSubstitute;
  2. using RackPeek.Domain.Helpers;
  3. using RackPeek.Domain.Resources.Hardware.UpsUnits;
  4. using RackPeek.Domain.Resources.Models;
  5. namespace Tests.HardwareResources.Ups;
  6. public class AddUpsUseCaseTests
  7. {
  8. [Fact]
  9. public async Task ExecuteAsync_Adds_new_ups_when_not_exists()
  10. {
  11. var host = new UsecaseTestHost();
  12. var repo = host.HardwareRepo;
  13. repo.GetByNameAsync("ups01").Returns((Hardware?)null);
  14. var sut = host.Get<AddUpsUseCase>();
  15. await sut.ExecuteAsync("ups01");
  16. await repo.Received(1).AddAsync(Arg.Is<RackPeek.Domain.Resources.Models.Ups>(u =>
  17. u.Name == "ups01"
  18. ));
  19. }
  20. [Fact]
  21. public async Task ExecuteAsync_Throws_if_ups_already_exists()
  22. {
  23. var host = new UsecaseTestHost();
  24. var repo = host.HardwareRepo;
  25. host.ResourceRepo.GetResourceKindAsync("ups01").Returns("Server");
  26. var sut = host.Get<AddUpsUseCase>();
  27. var ex = await Assert.ThrowsAsync<ConflictException>(async () =>
  28. await sut.ExecuteAsync("ups01")
  29. );
  30. await repo.DidNotReceive().AddAsync(Arg.Any<RackPeek.Domain.Resources.Models.Ups>());
  31. }
  32. }