feat(platform): expose multi-source vehicle evidence
This commit is contained in:
@@ -186,6 +186,31 @@ func TestCustomerMileageFailsClosedWithoutGrantTime(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestCustomerSourceEvidenceUsesOnlyCompleteAuthorizedDays(t *testing.T) {
|
||||
service := NewService(newCountingStore())
|
||||
shanghai := time.FixedZone("Asia/Shanghai", 8*60*60)
|
||||
validFrom := time.Date(2026, 7, 10, 12, 34, 56, 0, shanghai)
|
||||
validTo := time.Date(2026, 7, 15, 10, 0, 0, 0, shanghai)
|
||||
ctx := WithPrincipal(context.Background(), Principal{
|
||||
Name: "客户甲", Role: "customer", UserType: "customer",
|
||||
VehicleVINs: []string{"LB9A32A24R0LS1426"},
|
||||
VehicleGrants: []VehicleGrant{{VIN: "LB9A32A24R0LS1426", ValidFrom: validFrom, ValidTo: &validTo}},
|
||||
})
|
||||
if _, err := service.VehicleSourceEvidence(ctx, "LB9A32A24R0LS1426", "2026-07-10"); err == nil {
|
||||
t.Fatal("partial authorization start day should not expose daily source evidence")
|
||||
} else if clientErr, ok := asClientError(err); !ok || clientErr.Code != "HISTORY_BEFORE_AUTHORIZATION" {
|
||||
t.Fatalf("expected HISTORY_BEFORE_AUTHORIZATION, err=%v", err)
|
||||
}
|
||||
if _, err := service.VehicleSourceEvidence(ctx, "LB9A32A24R0LS1426", "2026-07-11"); err != nil {
|
||||
t.Fatalf("first complete authorization day should be allowed: %v", err)
|
||||
}
|
||||
if _, err := service.VehicleSourceEvidence(ctx, "LB9A32A24R0LS1426", "2026-07-15"); err == nil {
|
||||
t.Fatal("partial authorization end day should not expose daily source evidence")
|
||||
} else if clientErr, ok := asClientError(err); !ok || clientErr.Code != "HISTORY_AFTER_AUTHORIZATION" {
|
||||
t.Fatalf("expected HISTORY_AFTER_AUTHORIZATION, err=%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *countingStore) VehicleServiceOverviews(ctx context.Context, query VehicleOverviewBatchQuery) (Page[VehicleServiceOverview], error) {
|
||||
s.overviewBatchCalls++
|
||||
return s.MockStore.VehicleServiceOverviews(ctx, query)
|
||||
|
||||
Reference in New Issue
Block a user