| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- using Tests.EndToEnd.Infra;
- using Xunit.Abstractions;
- namespace Tests.EndToEnd;
- [Collection("Yaml CLI tests")]
- public class LaptopWorkflowTests(TempYamlCliFixture fs, ITestOutputHelper outputHelper)
- : IClassFixture<TempYamlCliFixture>
- {
- private async Task<(string, string)> ExecuteAsync(params string[] args)
- {
- outputHelper.WriteLine($"rpk {string.Join(" ", args)}");
- var output = await YamlCliTestHost.RunAsync(
- args,
- fs.Root,
- outputHelper,
- "config.yaml"
- );
- outputHelper.WriteLine(output);
- var yaml = await File.ReadAllTextAsync(Path.Combine(fs.Root, "config.yaml"));
- return (output, yaml);
- }
- [Fact]
- public async Task laptops_cli_workflow_test()
- {
- await File.WriteAllTextAsync(Path.Combine(fs.Root, "config.yaml"), "");
- // Add laptop
- var (output, yaml) = await ExecuteAsync("laptops", "add", "lap01");
- Assert.Equal("Laptop 'lap01' added.\n", output);
- Assert.Contains("name: lap01", yaml);
- // Set model
- (output, yaml) = await ExecuteAsync(
- "laptops", "set", "lap01",
- "--model", "ThinkPad X1 Carbon"
- );
- Assert.Equal("Laptop 'lap01' updated.\n", output);
- Assert.Contains("model: ThinkPad X1 Carbon", yaml);
- // Add CPU
- (output, yaml) = await ExecuteAsync(
- "laptops", "cpu", "add", "lap01",
- "--model", "Intel i7-1260P",
- "--cores", "12",
- "--threads", "16"
- );
- Assert.Equal("CPU added to laptop 'lap01'.\n", output);
- // Add Drive
- (output, yaml) = await ExecuteAsync(
- "laptops", "drives", "add", "lap01",
- "--type", "ssd",
- "--size", "512"
- );
- Assert.Equal("Drive added to laptop 'lap01'.\n", output);
- // Add GPU
- (output, yaml) = await ExecuteAsync(
- "laptops", "gpu", "add", "lap01",
- "--model", "Intel Iris Xe",
- "--vram", "1"
- );
- Assert.Equal("GPU added to laptop 'lap01'.\n", output);
- // Get laptop (rich one-line output)
- (output, yaml) = await ExecuteAsync("laptops", "get", "lap01");
- Assert.Equal(
- "lap01 Model: ThinkPad X1 Carbon, CPU: Intel i7-1260P, Cores: 12, RAM: 0GB, Storage: 512GB, GPU: Intel Iris Xe\n",
- output
- );
- // List laptops (strict table)
- (output, yaml) = await ExecuteAsync("laptops", "list");
- Assert.Equal("""
- ╭───────┬────────────────────┬────────────────┬───────┬──────────┬──────────────╮
- │ Name │ Model │ CPU │ Cores │ RAM (GB) │ Storage (GB) │
- ├───────┼────────────────────┼────────────────┼───────┼──────────┼──────────────┤
- │ lap01 │ ThinkPad X1 Carbon │ Intel i7-1260P │ 12 │ 0 │ 512 │
- ╰───────┴────────────────────┴────────────────┴───────┴──────────┴──────────────╯
- """, output);
- // Summary (strict table)
- (output, yaml) = await ExecuteAsync("laptops", "summary");
- Assert.Equal("""
- ╭───────┬────────────────────┬────────────────┬───────┬──────────┬──────────────╮
- │ Name │ Model │ CPU │ Cores │ RAM (GB) │ Storage (GB) │
- ├───────┼────────────────────┼────────────────┼───────┼──────────┼──────────────┤
- │ lap01 │ ThinkPad X1 Carbon │ Intel i7-1260P │ 12 │ 0 │ 512 │
- ╰───────┴────────────────────┴────────────────┴───────┴──────────┴──────────────╯
- """, output);
- // Describe (loose)
- (output, yaml) = await ExecuteAsync("laptops", "describe", "lap01");
- Assert.Contains("lap01", output);
- Assert.Contains("ThinkPad X1 Carbon", output);
- Assert.Contains("Intel i7-1260P", output);
- Assert.Contains("SSD", output);
- Assert.Contains("512", output);
- Assert.Contains("Intel Iris Xe", output);
- // Tree (loose)
- (output, yaml) = await ExecuteAsync("laptops", "tree", "lap01");
- Assert.Contains("lap01", output);
- Assert.Contains("CPU:", output);
- Assert.Contains("Drive:", output);
- Assert.Contains("GPU:", output);
- // Delete laptop
- (output, yaml) = await ExecuteAsync("laptops", "del", "lap01");
- Assert.Equal("""
- Laptop 'lap01' deleted.
- """, output);
- }
- }
|