feat: команда /help — справка по всем командам бота
All checks were successful
CI / test (push) Successful in 47s
CI / build-and-package (amd64, linux) (push) Successful in 41s
CI / build-and-package (amd64, windows) (push) Successful in 41s

This commit is contained in:
Hermes
2026-08-16 20:05:11 +05:00
parent 0142686592
commit 91e91ac3ce
2 changed files with 58 additions and 4 deletions

View File

@@ -162,4 +162,34 @@ func TestNew_UpdateWiring(t *testing.T) {
if a2.Updater.Token != "embedded-update-token" {
t.Errorf("Token = %q, want embedded-update-token (вшитый приоритетнее)", a2.Updater.Token)
}
}
// TestHelp_IsBinaryCommand проверяет, что /help распознаётся cmdName и, значит,
// в handleIncoming попадёт в бинарную ветку (не в машину состояний задач).
// Косвенно: /help не должен иметь аргумента-номера задачи (как /status N).
func TestHelp_IsBinaryCommand(t *testing.T) {
if got := cmdName("/help"); got != "/help" {
t.Errorf("cmdName(/help) = %q, want /help", got)
}
if hasArg("/help") {
t.Errorf("/help не должен требовать аргумент")
}
if got := cmdName("/help foo"); got != "/help" {
t.Errorf("cmdName(/help foo) = %q, want /help", got)
}
}
// TestHelpText_ContainsCommands проверяет, что справка упоминает все команды.
func TestHelpText_ContainsCommands(t *testing.T) {
for _, cmd := range []string{
"/start", "/cancel", "/skip", "/retry", "/status", "/continue",
"/update", "/help",
} {
if !strings.Contains(helpText, cmd) {
t.Errorf("helpText не упоминает команду %s", cmd)
}
}
if !strings.Contains(helpText, "Ratatoskr") {
t.Errorf("helpText не содержит имени бота")
}
}