MCPcopy Create free account
hub / github.com/driangle/taskmd / TestHandleConfig_WithProject

Function TestHandleConfig_WithProject

apps/cli/internal/web/handlers_test.go:1441–1472  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1439}
1440
1441func 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
1474func TestHandleConfig_WithoutProject_ReturnsDefault(t *testing.T) {
1475 defaultPhases := []PhaseInfo{{ID: "default-phase", Name: "Default Phase"}}

Callers

nothing calls this directly

Calls 5

createProjectTaskDirFunction · 0.85
NewProjectResolverFunction · 0.85
setupProjectMiddlewareFunction · 0.85
handleConfigFunction · 0.85
ServeHTTPMethod · 0.80

Tested by

no test coverage detected