(t *testing.T)
| 1439 | } |
| 1440 | |
| 1441 | func TestHandleConfig_WithProject(t *testing.T) { |
| 1442 | defaultPhases := []PhaseInfo{{ID: "default-phase", Name: "Default Phase"}} |
| 1443 | projectPhases := []PhaseInfo{{ID: "proj-phase", Name: "Project Phase"}} |
| 1444 | |
| 1445 | projectDir := createProjectTaskDir(t) |
| 1446 | resolver := NewProjectResolver(func(id string) (string, []PhaseInfo, error) { |
| 1447 | if id == "proj-a" { |
| 1448 | return projectDir, projectPhases, nil |
| 1449 | } |
| 1450 | return "", nil, ErrProjectNotFound |
| 1451 | }, false) |
| 1452 | |
| 1453 | cfg := Config{ReadOnly: false, Version: "test", Phases: defaultPhases} |
| 1454 | handler := setupProjectMiddleware(resolver, handleConfig(cfg)) |
| 1455 | |
| 1456 | // With ?project=proj-a, should return project phases. |
| 1457 | req := httptest.NewRequest(http.MethodGet, "/api/config?project=proj-a", nil) |
| 1458 | rec := httptest.NewRecorder() |
| 1459 | handler.ServeHTTP(rec, req) |
| 1460 | |
| 1461 | if rec.Code != http.StatusOK { |
| 1462 | t.Fatalf("expected 200, got %d", rec.Code) |
| 1463 | } |
| 1464 | |
| 1465 | var result ConfigResponse |
| 1466 | if err := json.Unmarshal(rec.Body.Bytes(), &result); err != nil { |
| 1467 | t.Fatalf("invalid JSON: %v", err) |
| 1468 | } |
| 1469 | if len(result.Phases) != 1 || result.Phases[0].ID != "proj-phase" { |
| 1470 | t.Fatalf("expected project phases, got %v", result.Phases) |
| 1471 | } |
| 1472 | } |
| 1473 | |
| 1474 | func TestHandleConfig_WithoutProject_ReturnsDefault(t *testing.T) { |
| 1475 | defaultPhases := []PhaseInfo{{ID: "default-phase", Name: "Default Phase"}} |
nothing calls this directly
no test coverage detected