UpdateSystemDriveUseCaseTests.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System.ComponentModel.DataAnnotations;
  2. using NSubstitute;
  3. using RackPeek.Domain.Helpers;
  4. using RackPeek.Domain.Resources.Models;
  5. using RackPeek.Domain.Resources.SystemResources;
  6. using RackPeek.Domain.Resources.SystemResources.UseCases;
  7. namespace Tests.HardwareResources.Systems;
  8. public class UpdateSystemDriveUseCaseTests
  9. {
  10. [Fact]
  11. public async Task ExecuteAsync_Updates_drive_when_found()
  12. {
  13. // Arrange
  14. var repo = Substitute.For<ISystemRepository>();
  15. var system = new SystemResource
  16. {
  17. Name = "sys1",
  18. Drives = new List<Drive> { new() { Type = "ssd", Size = 256 } }
  19. };
  20. repo.GetByNameAsync("sys1").Returns(system);
  21. var sut = new UpdateSystemDriveUseCase(repo);
  22. // Act
  23. await sut.ExecuteAsync("sys1", 0, "nvme", 512);
  24. // Assert
  25. Assert.Equal("nvme", system.Drives[0].Type);
  26. Assert.Equal(512, system.Drives[0].Size);
  27. await repo.Received(1).UpdateAsync(system);
  28. }
  29. [Fact]
  30. public async Task ExecuteAsync_Throws_when_system_not_found()
  31. {
  32. var repo = Substitute.For<ISystemRepository>();
  33. repo.GetByNameAsync("sys1").Returns((SystemResource?)null);
  34. var sut = new UpdateSystemDriveUseCase(repo);
  35. await Assert.ThrowsAsync<NotFoundException>(() =>
  36. sut.ExecuteAsync("sys1", 0, "ssd", 512)
  37. );
  38. }
  39. [Fact]
  40. public async Task ExecuteAsync_Throws_when_drive_not_found()
  41. {
  42. var repo = Substitute.For<ISystemRepository>();
  43. var system = new SystemResource { Name = "sys1", Drives = new List<Drive>() };
  44. repo.GetByNameAsync("sys1").Returns(system);
  45. var sut = new UpdateSystemDriveUseCase(repo);
  46. await Assert.ThrowsAsync<NotFoundException>(() =>
  47. sut.ExecuteAsync("sys1", 0, "ssd", 512)
  48. );
  49. }
  50. [Fact]
  51. public async Task ExecuteAsync_Throws_when_type_invalid()
  52. {
  53. var repo = Substitute.For<ISystemRepository>();
  54. var sut = new UpdateSystemDriveUseCase(repo);
  55. await Assert.ThrowsAsync<ValidationException>(() =>
  56. sut.ExecuteAsync("sys1", 0, "", 512)
  57. );
  58. }
  59. [Fact]
  60. public async Task ExecuteAsync_Throws_when_size_negative()
  61. {
  62. var repo = Substitute.For<ISystemRepository>();
  63. var sut = new UpdateSystemDriveUseCase(repo);
  64. await Assert.ThrowsAsync<ValidationException>(() =>
  65. sut.ExecuteAsync("sys1", 0, "ssd", -1)
  66. );
  67. }
  68. }