41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package usecase
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"haixun-backend/internal/library/clock"
|
|
"haixun-backend/internal/model/job/domain/entity"
|
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
)
|
|
|
|
func TestBuildScheduleRunPayload_InjectsTimezoneMetadata(t *testing.T) {
|
|
triggeredAt := clock.NowUnixNano()
|
|
schedule := &entity.Schedule{
|
|
ID: primitive.NewObjectID(),
|
|
Timezone: "Asia/Taipei",
|
|
Cron: "0 9 * * *",
|
|
PayloadTemplate: map[string]any{
|
|
"target": "demo",
|
|
},
|
|
}
|
|
|
|
payload := buildScheduleRunPayload(schedule, triggeredAt)
|
|
if payload["target"] != "demo" {
|
|
t.Fatalf("target = %v, want demo", payload["target"])
|
|
}
|
|
meta, ok := payload[schedulePayloadKey].(map[string]any)
|
|
if !ok {
|
|
t.Fatal("expected _schedule metadata")
|
|
}
|
|
if meta["timezone"] != "Asia/Taipei" {
|
|
t.Fatalf("timezone = %v", meta["timezone"])
|
|
}
|
|
if meta["storage_tz"] != clock.StorageTimezone {
|
|
t.Fatalf("storage_tz = %v", meta["storage_tz"])
|
|
}
|
|
if meta["triggered_at"] != triggeredAt {
|
|
t.Fatalf("triggered_at = %v", meta["triggered_at"])
|
|
}
|
|
}
|