package main import ( "os" "testing" ) func TestScanA1ProcessingJobsSmoke(t *testing.T) { dump := os.Getenv("SEED_A1_MYSQL_DUMP") if dump == "" { dump = `d:\Users\Green Eclipse\Downloads\descrybe_new.sql` } if _, err := os.Stat(dump); err != nil { t.Skipf("mysql dump not available: %v", err) } f, err := os.Open(dump) if err != nil { t.Fatal(err) } defer f.Close() jobs, err := scanA1ProcessingJobs(f, "97e1a309-3d23-4aa2-b518-8e8d7afdfec7") if err != nil { t.Fatal(err) } if len(jobs) < 100 { t.Fatalf("expected many A1 jobs, got %d", len(jobs)) } has := false for _, j := range jobs { if j.id == "827f0b82-3214-4c1d-bf05-2455bbd66fc6" { has = true if j.status != "completed" || j.totalProducts != 1 { t.Fatalf("target job unexpected status=%s total=%d", j.status, j.totalProducts) } } } if !has { t.Fatal("missing target job 827f0b82-…") } } func TestParseMySQLTupleFields(t *testing.T) { fields := parseMySQLTupleFields("('827f0b82-3214-4c1d-bf05-2455bbd66fc6',\t'user_x',\t'97e1a309-3d23-4aa2-b518-8e8d7afdfec7',\t'completed',\t1,\t1,\tNULL,\t'2026-07-31 08:36:45',\t'2026-07-31 08:36:58',\t'2026-07-31 08:36:45',\t'2026-07-31 08:36:58',\t'full',\tNULL,\t7500),") if len(fields) < 14 { t.Fatalf("fields=%d %#v", len(fields), fields) } if fields[0] != "827f0b82-3214-4c1d-bf05-2455bbd66fc6" || fields[2] != "97e1a309-3d23-4aa2-b518-8e8d7afdfec7" { t.Fatalf("unexpected fields %#v", fields) } } func TestParseDumpJobID(t *testing.T) { id, err := parseDumpJobID("827f0b82-3214-4c1d-bf05-2455bbd66fc6") if err != nil || id.String() != "827f0b82-3214-4c1d-bf05-2455bbd66fc6" { t.Fatalf("uuid parse: %v %s", err, id) } sha, err := parseDumpJobID("12345") if err != nil || sha.String() == "12345" { t.Fatalf("sha1 remap expected, got %v %s", err, sha) } }