LaptopErrorTests.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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", "drive", "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. // NIC errors
  74. [Fact]
  75. public async Task nic_add_missing_laptop_returns_error() {
  76. (var output, var _) = await ExecuteAsync(
  77. "laptops", "nic", "add", "ghost",
  78. "--type", "rj45",
  79. "--speed", "1",
  80. "--ports", "1"
  81. );
  82. Assert.Contains("not found", output, StringComparison.OrdinalIgnoreCase);
  83. }
  84. [Fact]
  85. public async Task nic_add_invalid_type_returns_error() {
  86. await ExecuteAsync("laptops", "add", "lap01");
  87. (var output, var _) = await ExecuteAsync(
  88. "laptops", "nic", "add", "lap01",
  89. "--type", "not-a-port-type",
  90. "--speed", "1",
  91. "--ports", "1"
  92. );
  93. Assert.Contains("not valid", output, StringComparison.OrdinalIgnoreCase);
  94. }
  95. [Fact]
  96. public async Task nic_set_invalid_index_returns_error() {
  97. await ExecuteAsync("laptops", "add", "lap01");
  98. (var output, var _) = await ExecuteAsync(
  99. "laptops", "nic", "set", "lap01", "4",
  100. "--type", "rj45"
  101. );
  102. Assert.Contains("not found", output, StringComparison.OrdinalIgnoreCase);
  103. }
  104. [Fact]
  105. public async Task nic_del_invalid_index_returns_error() {
  106. await ExecuteAsync("laptops", "add", "lap01");
  107. (var output, var _) = await ExecuteAsync("laptops", "nic", "del", "lap01", "2");
  108. Assert.Contains("not found", output, StringComparison.OrdinalIgnoreCase);
  109. }
  110. }