LaptopWorkflowTests.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using Tests.EndToEnd.Infra;
  2. using Xunit.Abstractions;
  3. namespace Tests.EndToEnd.LaptopTests;
  4. [Collection("Yaml CLI tests")]
  5. public class LaptopWorkflowTests(TempYamlCliFixture fs, ITestOutputHelper outputHelper)
  6. : IClassFixture<TempYamlCliFixture> {
  7. private async Task<(string, string)> ExecuteAsync(params string[] args) {
  8. outputHelper.WriteLine($"rpk {string.Join(" ", args)}");
  9. var output = await YamlCliTestHost.RunAsync(
  10. args,
  11. fs.Root,
  12. outputHelper,
  13. "config.yaml"
  14. );
  15. outputHelper.WriteLine(output);
  16. var yaml = await File.ReadAllTextAsync(Path.Combine(fs.Root, "config.yaml"));
  17. return (output, yaml);
  18. }
  19. [Fact]
  20. public async Task laptops_cli_workflow_test() {
  21. await File.WriteAllTextAsync(Path.Combine(fs.Root, "config.yaml"), "");
  22. // Add laptop
  23. (var output, var yaml) = await ExecuteAsync("laptops", "add", "lap01");
  24. Assert.Equal("Laptop 'lap01' added.\n", output);
  25. Assert.Contains("name: lap01", yaml);
  26. // Set model
  27. (output, yaml) = await ExecuteAsync(
  28. "laptops", "set", "lap01",
  29. "--model", "ThinkPad X1 Carbon"
  30. );
  31. Assert.Equal("Laptop 'lap01' updated.\n", output);
  32. Assert.Contains("model: ThinkPad X1 Carbon", yaml);
  33. // Add CPU
  34. (output, yaml) = await ExecuteAsync(
  35. "laptops", "cpu", "add", "lap01",
  36. "--model", "Intel i7-1260P",
  37. "--cores", "12",
  38. "--threads", "16"
  39. );
  40. Assert.Equal("CPU added to Laptop 'lap01'.\n", output);
  41. // Add Drive
  42. (output, yaml) = await ExecuteAsync(
  43. "laptops", "drives", "add", "lap01",
  44. "--type", "ssd",
  45. "--size", "512"
  46. );
  47. Assert.Equal("Drive added to Laptop 'lap01'.\n", output);
  48. // Add GPU
  49. (output, yaml) = await ExecuteAsync(
  50. "laptops", "gpu", "add", "lap01",
  51. "--model", "Intel Iris Xe",
  52. "--vram", "1"
  53. );
  54. Assert.Equal("GPU added to Laptop 'lap01'.\n", output);
  55. // Get laptop (rich one-line output)
  56. (output, yaml) = await ExecuteAsync("laptops", "get", "lap01");
  57. Assert.Equal(
  58. "lap01\n",
  59. output
  60. );
  61. // List laptops
  62. (output, yaml) = await ExecuteAsync("laptops", "list");
  63. Assert.Contains("lap01", output);
  64. // Summary
  65. (output, yaml) = await ExecuteAsync("laptops", "summary");
  66. Assert.Contains("lap01", output);
  67. // Describe
  68. (output, yaml) = await ExecuteAsync("laptops", "describe", "lap01");
  69. Assert.Contains("lap01", output);
  70. // Tree
  71. (output, yaml) = await ExecuteAsync("laptops", "tree", "lap01");
  72. Assert.Contains("lap01", output);
  73. // Delete laptop
  74. (output, yaml) = await ExecuteAsync("laptops", "del", "lap01");
  75. Assert.Equal("""
  76. Laptop 'lap01' deleted.
  77. """, output);
  78. }
  79. }