using System.CommandLine; using ScadaLink.CLI; using ScadaLink.CLI.Commands; namespace ScadaLink.CLI.Tests; public class FormatResolutionTests { private static (Option formatOption, RootCommand root) BuildHarness() { var formatOption = new Option("--format") { Recursive = true }; var root = new RootCommand(); root.Add(formatOption); return (formatOption, root); } [Fact] public void ResolveFormat_ExplicitFlag_OverridesConfig() { var (formatOption, root) = BuildHarness(); var result = root.Parse(new[] { "--format", "table" }); var config = new CliConfig { DefaultFormat = "json" }; var format = CommandHelpers.ResolveFormat(result, formatOption, config); Assert.Equal("table", format); } [Fact] public void ResolveFormat_FlagAbsent_UsesConfigDefaultFormat() { // Regression for CLI-001: when --format is not supplied, the config-file / // env-var DefaultFormat must be honoured instead of always falling back to "json". var (formatOption, root) = BuildHarness(); var result = root.Parse(Array.Empty()); var config = new CliConfig { DefaultFormat = "table" }; var format = CommandHelpers.ResolveFormat(result, formatOption, config); Assert.Equal("table", format); } [Fact] public void ResolveFormat_FlagAbsent_AndNoConfig_DefaultsToJson() { var (formatOption, root) = BuildHarness(); var result = root.Parse(Array.Empty()); var config = new CliConfig { DefaultFormat = "json" }; var format = CommandHelpers.ResolveFormat(result, formatOption, config); Assert.Equal("json", format); } }