RemoveLabelUseCaseTests.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using NSubstitute;
  2. using RackPeek.Domain.Persistence;
  3. using RackPeek.Domain.Resources;
  4. using RackPeek.Domain.Resources.Servers;
  5. using RackPeek.Domain.UseCases.Labels;
  6. namespace Tests.Unit.UseCases.Labels;
  7. public class RemoveLabelUseCaseTests
  8. {
  9. private readonly IResourceCollection _repo = Substitute.For<IResourceCollection>();
  10. [Fact]
  11. public async Task execute_async__existing_label__removes_key_and_updates()
  12. {
  13. // Arrange
  14. var server = new Server
  15. {
  16. Name = "db-01",
  17. Labels = new() { ["env"] = "production" }
  18. };
  19. _repo.GetByNameAsync("db-01").Returns(server);
  20. var sut = new RemoveLabelUseCase<Server>(_repo);
  21. // Act
  22. await sut.ExecuteAsync("db-01", "env");
  23. // Assert
  24. Assert.False(server.Labels.ContainsKey("env"));
  25. await _repo.Received(1).UpdateAsync(server);
  26. }
  27. [Fact]
  28. public async Task execute_async__key_not_present__does_not_update_repo()
  29. {
  30. // Arrange
  31. var server = new Server
  32. {
  33. Name = "db-01",
  34. Labels = new() { ["env"] = "production" }
  35. };
  36. _repo.GetByNameAsync("db-01").Returns(server);
  37. var sut = new RemoveLabelUseCase<Server>(_repo);
  38. // Act
  39. await sut.ExecuteAsync("db-01", "nonexistent");
  40. // Assert
  41. await _repo.DidNotReceive().UpdateAsync(Arg.Any<Resource>());
  42. }
  43. }