Beispiel #1
0
        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
> 
"
                }
            });
        }
Beispiel #2
0
        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
"
                }
            });
        }
Beispiel #3
0
        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) }
            });
        }
Beispiel #4
0
        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) }
            });
        }
Beispiel #5
0
        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)
                }
            });
        }
Beispiel #6
0
        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        = ""
                }
            });
        }
Beispiel #7
0
        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
"
                }
            });
        }
Beispiel #8
0
        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
"
                }
            });
        }
Beispiel #9
0
        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"
                }
            });
        }
Beispiel #10
0
        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) *******
"
                }
            });
        }
Beispiel #11
0
        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\""
                    }),
                }
            });
        }