LaptopErrorTests.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using Tests.EndToEnd.Infra;
  2. using Xunit.Abstractions;
  3. namespace Tests.EndToEnd.LaptopTests;
  4. [Collection("Yaml CLI tests")]
  5. public class LaptopErrorTests(TempYamlCliFixture fs, ITestOutputHelper outputHelper)
  6. : IClassFixture<TempYamlCliFixture> {
  7. private async Task<(string, string)> ExecuteAsync(params string[] args) {
  8. var output = await YamlCliTestHost.RunAsync(
  9. args,
  10. fs.Root,
  11. outputHelper,
  12. "config.yaml"
  13. );
  14. var yaml = await File.ReadAllTextAsync(Path.Combine(fs.Root, "config.yaml"));
  15. return (output, yaml);
  16. }
  17. [Fact]
  18. public async Task adding_duplicate_laptop_returns_error() {
  19. await ExecuteAsync("laptops", "add", "lap01");
  20. (var output, var _) = await ExecuteAsync("laptops", "add", "lap01");
  21. Assert.Contains("already exists", output, StringComparison.OrdinalIgnoreCase);
  22. }
  23. [Fact]
  24. public async Task get_missing_laptop_returns_error() {
  25. (var output, var _) = await ExecuteAsync("laptops", "get", "ghost");
  26. Assert.Contains("not found", output, StringComparison.OrdinalIgnoreCase);
  27. }
  28. [Fact]
  29. public async Task delete_missing_laptop_returns_error() {
  30. (var output, var _) = await ExecuteAsync("laptops", "del", "ghost");
  31. Assert.Contains("not found", output, StringComparison.OrdinalIgnoreCase);
  32. }
  33. // CPU errors
  34. [Fact]
  35. public async Task cpu_add_missing_laptop_returns_error() {
  36. (var output, var _) = await ExecuteAsync(
  37. "laptops", "cpu", "add", "ghost",
  38. "--model", "Intel i7",
  39. "--cores", "8",
  40. "--threads", "16"
  41. );
  42. Assert.Contains("not found", output, StringComparison.OrdinalIgnoreCase);
  43. }
  44. [Fact]
  45. public async Task cpu_set_invalid_index_returns_error() {
  46. await ExecuteAsync("laptops", "add", "lap01");
  47. (var output, var _) = await ExecuteAsync(
  48. "laptops", "cpu", "set", "lap01", "5",
  49. "--model", "Intel i7"
  50. );
  51. Assert.Contains("not found", output, StringComparison.OrdinalIgnoreCase);
  52. }
  53. // Drive errors
  54. [Fact]
  55. public async Task drive_set_invalid_index_returns_error() {
  56. await ExecuteAsync("laptops", "add", "lap01");
  57. (var output, var _) = await ExecuteAsync(
  58. "laptops", "drives", "set", "lap01", "3",
  59. "--type", "ssd"
  60. );
  61. Assert.Contains("not found", output, StringComparison.OrdinalIgnoreCase);
  62. }
  63. // GPU errors
  64. [Fact]
  65. public async Task gpu_set_invalid_index_returns_error() {
  66. await ExecuteAsync("laptops", "add", "lap01");
  67. (var output, var _) = await ExecuteAsync(
  68. "laptops", "gpu", "set", "lap01", "2",
  69. "--model", "Intel Iris Xe"
  70. );
  71. Assert.Contains("not found", output, StringComparison.OrdinalIgnoreCase);
  72. }
  73. }