package cmd import ( "bytes" "strings" "testing" ) func TestRootCmd_SingleWordRejected(t *testing.T) { rootCmd.SetArgs([]string{"infow"}) var stderr bytes.Buffer rootCmd.SetErr(&stderr) err := rootCmd.Execute() if err == nil { t.Fatal("expected error for single bare word, got nil") } errMsg := err.Error() if !strings.Contains(errMsg, `unknown command "infow"`) { t.Errorf("expected error to mention unknown command, got: %s", errMsg) } if !strings.Contains(errMsg, "multiple words") { t.Errorf("expected error to suggest multiple words, got: %s", errMsg) } } func TestRootCmd_MultipleWordsNotRejected(t *testing.T) { rootCmd.SetArgs([]string{"remember", "to", "update", "dns"}) err := rootCmd.Execute() // Will fail at API call (no server), but should NOT be the "unknown command" error if err != nil && strings.Contains(err.Error(), "unknown command") { t.Errorf("multi-word input should not be rejected as unknown command, got: %s", err.Error()) } } func TestRootCmd_NoArgs_ShowsHelp(t *testing.T) { rootCmd.SetArgs([]string{}) var stdout bytes.Buffer rootCmd.SetOut(&stdout) err := rootCmd.Execute() if err != nil { t.Fatalf("expected no error for zero args, got: %v", err) } output := stdout.String() if !strings.Contains(output, "Available Commands") { t.Errorf("expected help output, got: %s", output) } }