feat(platform): batch vehicle service overview lookup

This commit is contained in:
lingniu
2026-07-04 03:12:21 +08:00
parent f996fa0df9
commit e35565f993
4 changed files with 259 additions and 16 deletions

View File

@@ -0,0 +1,45 @@
package platform
import (
"context"
"net/url"
"testing"
)
type countingStore struct {
*MockStore
vehiclesCalls int
vehicleRealtimeCalls int
}
func newCountingStore() *countingStore {
return &countingStore{MockStore: NewMockStore()}
}
func (s *countingStore) Vehicles(ctx context.Context, query url.Values) (Page[VehicleRow], error) {
s.vehiclesCalls++
return s.MockStore.Vehicles(ctx, query)
}
func (s *countingStore) VehicleRealtime(ctx context.Context, query url.Values) (Page[VehicleRealtimeRow], error) {
s.vehicleRealtimeCalls++
return s.MockStore.VehicleRealtime(ctx, query)
}
func TestVehicleServiceOverviewsUsesBatchDataPath(t *testing.T) {
store := newCountingStore()
service := NewService(store)
page, err := service.VehicleServiceOverviews(context.Background(), VehicleOverviewBatchQuery{
Keywords: []string{"粤AG18312", "LMRKH9AC2R1004087"},
Limit: 200,
})
if err != nil {
t.Fatalf("VehicleServiceOverviews returned error: %v", err)
}
if page.Total != 2 || len(page.Items) != 2 {
t.Fatalf("expected two overview rows, got %+v", page)
}
if store.vehiclesCalls > 1 || store.vehicleRealtimeCalls > 1 {
t.Fatalf("batch overview should avoid per-keyword store calls, vehicles=%d realtime=%d", store.vehiclesCalls, store.vehicleRealtimeCalls)
}
}