package db import ( "testing" "github.com/jacek/pamietnik/backend/internal/domain" ) func TestValidateTrackpoint_HappyPath(t *testing.T) { p := domain.Trackpoint{ EventID: "evt-1", DeviceID: "dev-1", Lat: 52.5, Lon: 13.4, Source: "gps", } if err := validateTrackpoint(p); err != nil { t.Fatalf("expected no error, got: %v", err) } } func TestValidateTrackpoint_MissingEventID(t *testing.T) { p := domain.Trackpoint{ DeviceID: "dev-1", Lat: 52.5, Lon: 13.4, } err := validateTrackpoint(p) if err == nil { t.Fatal("expected error for missing event_id, got nil") } } func TestValidateTrackpoint_MissingDeviceID(t *testing.T) { p := domain.Trackpoint{ EventID: "evt-1", Lat: 52.5, Lon: 13.4, } err := validateTrackpoint(p) if err == nil { t.Fatal("expected error for missing device_id, got nil") } } func TestValidateTrackpoint_LatOutOfRange(t *testing.T) { cases := []struct { lat float64 lon float64 }{ {91, 0}, {-91, 0}, {0, 181}, {0, -181}, } for _, c := range cases { p := domain.Trackpoint{ EventID: "evt-1", DeviceID: "dev-1", Lat: c.lat, Lon: c.lon, } if err := validateTrackpoint(p); err == nil { t.Errorf("expected error for lat=%v lon=%v, got nil", c.lat, c.lon) } } } func TestValidateTrackpoint_InvalidSource(t *testing.T) { p := domain.Trackpoint{ EventID: "evt-1", DeviceID: "dev-1", Lat: 10, Lon: 10, Source: "satellite", } if err := validateTrackpoint(p); err == nil { t.Fatal("expected error for invalid source, got nil") } } func TestValidateTrackpoint_EmptySourceIsAllowed(t *testing.T) { p := domain.Trackpoint{ EventID: "evt-1", DeviceID: "dev-1", Lat: 10, Lon: 10, Source: "", } if err := validateTrackpoint(p); err != nil { t.Fatalf("empty source should be allowed, got: %v", err) } }