package environment import ( "context" "encoding/json" "os" "testing" ) func TestPendingEnvironmentDatabaseIDOrder(t *testing.T) { databaseURL := os.Getenv("CREATORHUB_POSTGRES_TEST_URL") if databaseURL == "" { t.Skip("set CREATORHUB_POSTGRES_TEST_URL to run PostgreSQL integration coverage") } ctx := context.Background() store := openFullyMigratedHub(t, ctx, isolatedDatabaseURL(t, databaseURL)) t.Cleanup(func() { _ = store.Close() }) if _, err := store.CreateGateway(ctx, "order-gateway", "http://127.0.0.1:8090", "order-gateway-test-token"); err != nil { t.Fatal(err) } first, err := store.CreateStandaloneEnv(ctx, "order-gateway", Fingerprint{}, 0) if err != nil { t.Fatal(err) } second, err := store.CreateStandaloneEnv(ctx, "order-gateway", Fingerprint{}, 0) if err != nil { t.Fatal(err) } if first.ID < 1 || second.ID <= first.ID { t.Fatalf("environment IDs must increase: first=%d second=%d", first.ID, second.ID) } pending, err := store.ListPendingEnvironments(ctx) if err != nil || len(pending) != 2 || pending[0].ID != second.ID || pending[1].ID != first.ID { t.Fatalf("pending environments must be newest first: %#v err=%v", pending, err) } data, err := json.Marshal(second) if err != nil { t.Fatal(err) } var response struct { ID int64 `json:"id"` } if err := json.Unmarshal(data, &response); err != nil || response.ID != second.ID { t.Fatalf("database ID missing from environment JSON: %s err=%v", data, err) } }