@@ -415,6 +415,54 @@ func TestFormsUseSlackTheme(t *testing.T) {
415415 })
416416}
417417
418+ func TestFormsAccessible (t * testing.T ) {
419+ fsMock := slackdeps .NewFsMock ()
420+ osMock := slackdeps .NewOsMock ()
421+ osMock .AddDefaultMocks ()
422+ cfg := config .NewConfig (fsMock , osMock )
423+ cfg .Accessible = true
424+ io := NewIOStreams (cfg , fsMock , osMock )
425+
426+ t .Run ("select form accepts valid numbered input" , func (t * testing.T ) {
427+ var selected string
428+ f := buildSelectForm (io , "Pick one" , []string {"A" , "B" , "C" }, SelectPromptConfig {}, & selected )
429+
430+ var out strings.Builder
431+ err := f .WithOutput (& out ).WithInput (strings .NewReader ("2\n " )).Run ()
432+
433+ assert .NoError (t , err )
434+ assert .Equal (t , "B" , selected )
435+ assert .Contains (t , out .String (), "1. A" )
436+ assert .Contains (t , out .String (), "2. B" )
437+ assert .Contains (t , out .String (), "3. C" )
438+ assert .Contains (t , out .String (), "Enter a number between 1 and 3" )
439+ })
440+
441+ t .Run ("confirm form accepts yes/no input" , func (t * testing.T ) {
442+ var choice bool
443+ f := buildConfirmForm (io , "Continue?" , & choice )
444+
445+ var out strings.Builder
446+ err := f .WithOutput (& out ).WithInput (strings .NewReader ("y\n " )).Run ()
447+
448+ assert .NoError (t , err )
449+ assert .True (t , choice )
450+ assert .Contains (t , out .String (), "Continue?" )
451+ })
452+
453+ t .Run ("input form accepts text input" , func (t * testing.T ) {
454+ var input string
455+ f := buildInputForm (io , "Name?" , InputPromptConfig {}, & input )
456+
457+ var out strings.Builder
458+ err := f .WithOutput (& out ).WithInput (strings .NewReader ("my-app\n " )).Run ()
459+
460+ assert .NoError (t , err )
461+ assert .Equal (t , "my-app" , input )
462+ assert .Contains (t , out .String (), "Name?" )
463+ })
464+ }
465+
418466func TestFormsUseSurveyTheme (t * testing.T ) {
419467 t .Run ("multi-select uses survey prefix without lipgloss" , func (t * testing.T ) {
420468 var selected []string
0 commit comments