Files
bd2/go/internal/server/gamedata/cash_entitlements_test.go
T
Flechazo d8771caef2 feat(all): add hunting and events, commerce and rewards, binary calendars, GameData caching and login diagnostics
Implement hunting AP and progress, event tasks, exchanges, games, stories and actions; connect battle and reward handling.

Add CashShop plugin and installation, server purchases and entitlements, recharge rules and plugin version metadata.

Distribute binary calendars independently; cache GameData in memory and fix single-connection query deadlocks.

Improve automatic login and recovery diagnostics; document configuration and release flows.
2026-10-05 11:50:31 +08:00

39 lines
1.3 KiB
Go

package gamedata
import (
"bd2server/internal/server/wire"
"database/sql"
"testing"
)
func TestCashEntitlementDesignUsesTicketTypesAndAttendanceMapping(t *testing.T) {
db, err := sql.Open("sqlite", ":memory:")
if err != nil {
t.Fatal(err)
}
defer db.Close()
for _, table := range []string{"AvatarSetTable", "ContentTicketTable", "ContentOpenTable", "AttendanceRewardTable"} {
if _, err = db.Exec("CREATE TABLE " + table + "(ProtoBuf BLOB)"); err != nil {
t.Fatal(err)
}
}
db.Exec("INSERT INTO AvatarSetTable VALUES(?)", wire.AppendVarint(nil, 6, 10))
raw := wire.AppendVarint(nil, 4, 38)
raw = wire.AppendVarint(raw, 8, 2)
db.Exec("INSERT INTO ContentTicketTable VALUES(?)", raw)
raw = wire.AppendVarint(nil, 6, 38)
raw = wire.AppendVarint(raw, 2, 1)
db.Exec("INSERT INTO ContentOpenTable VALUES(?)", raw)
for _, id := range []uint64{2, 1} {
raw = wire.AppendVarint(nil, 1, 38)
raw = wire.AppendVarint(raw, 2, id)
raw = wire.AppendVarint(raw, 3, 60)
raw = wire.AppendVarint(raw, 5, 3)
db.Exec("INSERT INTO AttendanceRewardTable VALUES(?)", raw)
}
d, err := loadCashEntitlementDesign(db)
if err != nil || !d.AvatarSets[10] || d.TicketTypes[38] != 2 || d.AttendanceTypes[38] != 1 || len(d.Attendance[38]) != 2 || d.Attendance[38][0].ID != 1 {
t.Fatalf("%+v %v", d, err)
}
}