feat: add /summary, /setbreak, weekly totals, and fix command dispatch for arg-bearing commands
- Add /summary [YYYY-MM] command for monthly work/break/day-off totals - Add weekly totals row to main menu status - Add /setbreak <minutes> for configurable daily break threshold - Fix HandleMessage routing: extract command name instead of exact match (fixes /export YYYY-MM, /edit, /note, /summary, /setbreak) - Update README with full command table and configurable break docs
This commit is contained in:
29
internal/bot/summary_test.go
Normal file
29
internal/bot/summary_test.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package bot
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestFormatMonthTitle(t *testing.T) {
|
||||
tests := []struct {
|
||||
cal string
|
||||
year, m int
|
||||
want string
|
||||
}{
|
||||
{"gregorian", 2026, 6, "June 2026"},
|
||||
{"gregorian", 2024, 1, "January 2024"},
|
||||
{"jalali", 1404, 1, "Farvardin 1404"},
|
||||
{"jalali", 1405, 12, "Esfand 1405"},
|
||||
{"hijri", 1447, 1, "Muharram 1447"},
|
||||
{"hijri", 1447, 12, "Dhu al-Hijjah 1447"},
|
||||
}
|
||||
for _, tc := range tests {
|
||||
t.Run(tc.want, func(t *testing.T) {
|
||||
got := formatMonthTitle(tc.cal, tc.year, tc.m)
|
||||
if got != tc.want {
|
||||
t.Errorf("formatMonthTitle(%q, %d, %d) = %q, want %q",
|
||||
tc.cal, tc.year, tc.m, got, tc.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user