refactor(go): keep realtime cache vin scoped

This commit is contained in:
lingniu
2026-07-03 08:12:21 +08:00
parent 400047e08c
commit c2d058bf75
5 changed files with 33 additions and 33 deletions

View File

@@ -297,7 +297,7 @@ func TestRepositoryOnlineStatus(t *testing.T) {
}
}
func TestRepositoryUpdatesPhoneOnlyVehicleKey(t *testing.T) {
func TestRepositorySkipsFramesWithoutVIN(t *testing.T) {
repo, closeFn := newTestRepository(t)
defer closeFn()
ctx := context.Background()
@@ -315,23 +315,18 @@ func TestRepositoryUpdatesPhoneOnlyVehicleKey(t *testing.T) {
t.Fatalf("Update() error = %v", err)
}
vehicleKey := "JT808:13307811170"
merged, err := repo.GetMerged(ctx, vehicleKey)
if err != nil {
t.Fatalf("GetMerged() error = %v", err)
if _, err := repo.GetMerged(ctx, "JT808:13307811170"); err == nil {
t.Fatal("phone-only frame should not create a merged realtime snapshot")
}
if merged.VehicleKey != vehicleKey || merged.VIN != "" {
t.Fatalf("unexpected identity: %#v", merged)
if _, err := repo.GetRealtimeRaw(ctx, "JT808:13307811170", envelope.ProtocolJT808); err == nil {
t.Fatal("phone-only frame should not create realtime-raw")
}
if merged.Fields[envelope.FieldTotalMileageKM] != 10003.7 {
t.Fatalf("merged fields = %#v", merged.Fields)
}
status, err := repo.IsOnline(ctx, vehicleKey)
status, err := repo.IsOnline(ctx, "JT808:13307811170")
if err != nil {
t.Fatalf("IsOnline() error = %v", err)
}
if !status.Online || status.VehicleKey != vehicleKey {
t.Fatalf("online status = %#v", status)
if status.Online {
t.Fatalf("phone-only frame should not mark realtime online: %#v", status)
}
}
@@ -404,7 +399,7 @@ func TestHandlerReturnsMergedSnapshot(t *testing.T) {
}
}
func TestHandlerReturnsPhoneOnlyVehicleKeySnapshot(t *testing.T) {
func TestHandlerReturnsNotFoundForPhoneOnlyVehicleKey(t *testing.T) {
repo, closeFn := newTestRepository(t)
defer closeFn()
if err := repo.Update(context.Background(), envelope.FrameEnvelope{
@@ -420,12 +415,9 @@ func TestHandlerReturnsPhoneOnlyVehicleKeySnapshot(t *testing.T) {
req := httptest.NewRequest(http.MethodGet, "/api/realtime/vehicles/JT808:13307811170", nil)
rec := httptest.NewRecorder()
NewHandler(repo).ServeHTTP(rec, req)
if rec.Code != http.StatusOK {
if rec.Code != http.StatusNotFound {
t.Fatalf("status = %d body=%s", rec.Code, rec.Body.String())
}
if !stringsContains(rec.Body.String(), `"vehicle_key":"JT808:13307811170"`) {
t.Fatalf("unexpected body: %s", rec.Body.String())
}
}
func TestHandlerReturnsRealtimeRaw(t *testing.T) {