Files
lingniu-vehicle-ingest/go/vehicle-gateway/cmd/legacy-mileage-migrate/main_test.go
2026-07-27 16:46:15 +08:00

57 lines
2.2 KiB
Go

package main
import (
"database/sql"
"testing"
)
func TestResolveVINPrefersConsistentCurrentMapping(t *testing.T) {
current := mappingIndex{Unique: map[string]string{"沪A12345": "LA9GG64L0NBAF4175"}}
legacy := mappingIndex{Unique: map[string]string{"沪A12345": "LA9GG64L0NBAF4175"}}
vin, origin, conflict := resolveVIN("沪A12345", current, legacy)
if conflict || vin != "LA9GG64L0NBAF4175" || origin != "current_vehicle" {
t.Fatalf("unexpected resolution: vin=%q origin=%q conflict=%v", vin, origin, conflict)
}
}
func TestResolveVINRejectsCurrentLegacyConflict(t *testing.T) {
current := mappingIndex{Unique: map[string]string{"沪A12345": "LA9GG64L0NBAF4175"}}
legacy := mappingIndex{Unique: map[string]string{"沪A12345": "LA9GG64L0NBAF4176"}}
vin, _, conflict := resolveVIN("沪A12345", current, legacy)
if !conflict || vin != "" {
t.Fatalf("expected conflict rejection, got vin=%q conflict=%v", vin, conflict)
}
}
func TestResolveVINUsesLegacyFallback(t *testing.T) {
current := mappingIndex{Unique: map[string]string{}}
legacy := mappingIndex{Unique: map[string]string{"沪A12345": "LA9GG64L0NBAF4175"}}
vin, origin, conflict := resolveVIN("沪A12345", current, legacy)
if conflict || vin != "LA9GG64L0NBAF4175" || origin != "legacy_vehicle" {
t.Fatalf("unexpected resolution: vin=%q origin=%q conflict=%v", vin, origin, conflict)
}
}
func TestResolveVINAcceptsSourceVIN(t *testing.T) {
vin, origin, conflict := resolveVIN("LA9GG64L0NBAF4175", mappingIndex{}, mappingIndex{})
if conflict || vin != "LA9GG64L0NBAF4175" || origin != "source_vin" {
t.Fatalf("unexpected resolution: vin=%q origin=%q conflict=%v", vin, origin, conflict)
}
}
func TestNormalizeIdentifierRemovesWhitespace(t *testing.T) {
if got := normalizeIdentifier(" 沪 a 12345 \n"); got != "沪A12345" {
t.Fatalf("normalizeIdentifier() = %q", got)
}
}
func TestNullableTotalMileageConvertsMetersToKM(t *testing.T) {
got := nullableTotalMileageKM(sql.NullFloat64{Float64: 59198000, Valid: true})
if got != 59198.0 {
t.Fatalf("nullableTotalMileageKM() = %#v", got)
}
if got := nullableTotalMileageKM(sql.NullFloat64{}); got != nil {
t.Fatalf("invalid mileage should remain nil, got %#v", got)
}
}