public void WhenOperandListMissing_Prompts() { var testConsole = new AnsiTestConsole(); testConsole.Input.PushTextsWithEnter("something", "simple", ""); new AppRunner <App>() .UseSpectreAnsiConsole(testConsole) .UseSpectreArgumentPrompter() .Verify(new Scenario { When = { Args = $"{nameof(App.DoList)}" }, Then = { AssertContext = ctx => ctx.ParamValuesShouldBe(new List <string> { "something", "simple" }), Output = @"args (Text) > something > simple > " } }); }
public void CanOverridePromptText() { var testConsole = new AnsiTestConsole(); testConsole.Input.PushTextWithEnter("fishies"); testConsole.Input.PushTextWithEnter("fishies"); new AppRunner <App>() .UseSpectreAnsiConsole(testConsole) .UseSpectreArgumentPrompter(getPromptTextCallback: (ctx, arg) => "lala") .Verify(new Scenario { When = { Args = $"{nameof(App.Do)}", }, Then = { AssertContext = ctx => ctx.ParamValuesShouldBe("fishies", "fishies"), Output = @"lala (Text) fishies lala (Text) fishies " } }); }
public void WhenFlagsMissing_DoesNotPrompt() { var testConsole = new AnsiTestConsole(); testConsole.Input.PushTextsWithEnter("y", "y"); new AppRunner <App>() .UseSpectreAnsiConsole(testConsole) .UseSpectreArgumentPrompter() .Verify(new Scenario { When = { Args = $"{nameof(App.Flags)}" }, Then = { AssertContext = ctx => ctx.ParamValuesShouldBe(null, null) } }); }
public void WhenExplicitBoolOptionMissing_Prompts() { var testConsole = new AnsiTestConsole().Interactive(); testConsole.Input.PushTextWithEnter("y"); testConsole.Input.PushTextWithEnter("y"); new AppRunner <App>(new AppSettings { Arguments = { BooleanMode = BooleanMode.Explicit } }) .UseSpectreAnsiConsole(testConsole) .UseSpectreArgumentPrompter() .Verify(new Scenario { When = { Args = $"{nameof(App.Flags)}" }, Then = { AssertContext = ctx => ctx.ParamValuesShouldBe(true, true) } }); }
public void WhenInheritedOptionMissing_Prompts() { var testConsole = new AnsiTestConsole(); testConsole.Input.PushTextWithEnter("2"); new AppRunner <HierApp>() .UseSpectreAnsiConsole(testConsole) .UseSpectreArgumentPrompter() .Verify(new Scenario { When = { Args = $" --intercept1 1 {nameof(HierApp.Do)}" }, Then = { AssertContext = ctx => ctx.ParamValuesShouldBe <HierApp>(1, 2) } }); }
public void WhenOperandAndOptionProvided_DoesNotPrompt() { var testConsole = new AnsiTestConsole(); testConsole.Input.PushTextWithEnter("lala"); new AppRunner <App>() .UseSpectreAnsiConsole(testConsole) .UseSpectreArgumentPrompter() .Verify(new Scenario { When = { Args = $"{nameof(App.Do)} something --opt1 simple", }, Then = { AssertContext = ctx => ctx.ParamValuesShouldBe("simple", "something"), Output = "" } }); }
public void WhenOperandMissing_PromptsOnlyForOperand() { var testConsole = new AnsiTestConsole(); testConsole.Input.PushTextWithEnter("something"); new AppRunner <App>() .UseSpectreAnsiConsole(testConsole) .UseSpectreArgumentPrompter() .Verify(new Scenario { When = { Args = $"{nameof(App.Do)} --opt1 simple", }, Then = { AssertContext = ctx => ctx.ParamValuesShouldBe("simple", "something"), Output = @"arg1 (Text) something " } }); }
public void WhenBoolOperandMissing_Prompts() { var testConsole = new AnsiTestConsole().Interactive(); testConsole.Input.PushTextWithEnter("y"); new AppRunner <App>() .UseSpectreAnsiConsole(testConsole) .UseSpectreArgumentPrompter() .Verify(new Scenario { When = { Args = $"{nameof(App.Bool)}" }, Then = { AssertContext = ctx => ctx.ParamValuesShouldBe(true), Output = @"operand1 (Boolean) [y/n] (y): y " } }); }
public void CanFilterListOfArgumentsForPrompting() { var testConsole = new AnsiTestConsole(); testConsole.Input.PushTextWithEnter("something"); new AppRunner <App>() .UseSpectreAnsiConsole(testConsole) .UseSpectreArgumentPrompter(argumentFilter: arg => arg.Name == "arg1") .Verify(new Scenario { When = { Args = $"{nameof(App.Do)}" }, Then = { AssertContext = ctx => ctx.ParamValuesShouldBe(null, "something"), ExitCode = 2, Output = @"arg1 (Text) something opt1 is required" } }); }
public void WhenPasswordMissing_PromptMasksInput() { var testConsole = new AnsiTestConsole(); testConsole.Input.PushTextsWithEnter("lala", "fishies"); new AppRunner <App>() .UseSpectreAnsiConsole(testConsole) .UseSpectreArgumentPrompter() .Verify(new Scenario { When = { Args = $"{nameof(App.Secure)}" }, Then = { AssertContext = ctx => ctx.ParamValuesShouldBe("lala", new Password("fishies")), Output = @"user (Text) lala password (Text) ******* " } }); }
public void ListPrompt_CanIncludeQuotes() { var testConsole = new AnsiTestConsole(); testConsole.Input.PushTextsWithEnter("something", "simple", "'or not'", "\"so simple\"", ""); new AppRunner <App>() .UseSpectreAnsiConsole(testConsole) .UseSpectreArgumentPrompter() .Verify(new Scenario { When = { Args = $"{nameof(App.DoList)}" }, Then = { AssertContext = ctx => ctx.ParamValuesShouldBe( new List <string> { "something", "simple", "'or not'", "\"so simple\"" }), } }); }