Files
Catacombs/store/daily_test.go
2026-03-25 16:01:58 +09:00

67 lines
1.9 KiB
Go

package store
import (
"testing"
)
func TestSaveAndGetDaily(t *testing.T) {
dir := t.TempDir()
db, err := Open(dir + "/test_daily.db")
if err != nil {
t.Fatal(err)
}
defer db.Close()
db.SaveDaily(DailyRecord{Date: "2026-03-25", Player: "fp1", PlayerName: "Alice", FloorReached: 10, GoldEarned: 200})
db.SaveDaily(DailyRecord{Date: "2026-03-25", Player: "fp2", PlayerName: "Bob", FloorReached: 15, GoldEarned: 100})
db.SaveDaily(DailyRecord{Date: "2026-03-25", Player: "fp3", PlayerName: "Charlie", FloorReached: 15, GoldEarned: 300})
records, err := db.GetDailyLeaderboard("2026-03-25", 10)
if err != nil {
t.Fatal(err)
}
if len(records) != 3 {
t.Fatalf("expected 3 records, got %d", len(records))
}
// Charlie and Bob both floor 15, Charlie has more gold so first
if records[0].PlayerName != "Charlie" {
t.Errorf("expected Charlie first, got %s", records[0].PlayerName)
}
if records[1].PlayerName != "Bob" {
t.Errorf("expected Bob second, got %s", records[1].PlayerName)
}
if records[2].PlayerName != "Alice" {
t.Errorf("expected Alice third, got %s", records[2].PlayerName)
}
}
func TestDailyStreak(t *testing.T) {
dir := t.TempDir()
db, err := Open(dir + "/test_streak.db")
if err != nil {
t.Fatal(err)
}
defer db.Close()
db.SaveDaily(DailyRecord{Date: "2026-03-23", Player: "fp1", PlayerName: "Alice", FloorReached: 5, GoldEarned: 50})
db.SaveDaily(DailyRecord{Date: "2026-03-24", Player: "fp1", PlayerName: "Alice", FloorReached: 8, GoldEarned: 100})
db.SaveDaily(DailyRecord{Date: "2026-03-25", Player: "fp1", PlayerName: "Alice", FloorReached: 10, GoldEarned: 200})
streak, err := db.GetStreak("fp1", "2026-03-25")
if err != nil {
t.Fatal(err)
}
if streak != 3 {
t.Errorf("expected streak 3, got %d", streak)
}
// Gap in streak
streak2, err := db.GetStreak("fp1", "2026-03-27")
if err != nil {
t.Fatal(err)
}
if streak2 != 0 {
t.Errorf("expected streak 0 after gap, got %d", streak2)
}
}