Test Coverage + XSS Sanitization (WI-4)

Context

Comprehensive test coverage for the v2 fact engine pipeline plus XSS sanitization for JSONB fact values rendered in the UI.

Challenges

Challenge 3.1: Worker Handler Tests

Requirement: All 6 worker handlers have test coverage. Acceptance Criteria:

  • apps/worker-ingest/src/handlers/__tests__/ingest-news.test.ts
  • apps/worker-ingest/src/handlers/__tests__/cluster-stories.test.ts
  • apps/worker-ingest/src/handlers/__tests__/resolve-image.test.ts
  • apps/worker-facts/src/handlers/__tests__/extract-facts.test.ts
  • apps/worker-facts/src/handlers/__tests__/generate-evergreen.test.ts
  • apps/worker-validate/src/handlers/__tests__/validate-fact.test.ts Evaluation: PASS

Challenge 3.2: AI Function Tests

Requirement: AI extraction/validation/scoring functions tested. Acceptance Criteria:

  • packages/ai/src/__tests__/fact-engine.test.ts exists
  • Tests cover extraction, validation, scoring, evergreen generation Evaluation: PASS

Challenge 3.3: DB Query Tests

Requirement: Fact engine query functions tested. Acceptance Criteria:

  • packages/db/src/drizzle/__tests__/fact-engine-queries.test.ts exists Evaluation: PASS

Challenge 3.4: Sanitization Utility

Requirement: XSS sanitization for fact JSONB values. Acceptance Criteria:

  • packages/shared/src/sanitize.ts exists with sanitizeFactValue()
  • Strips HTML tags, event handlers, dangerous URI schemes
  • Recursive deep-sanitize for nested objects/arrays
  • packages/shared/src/__tests__/sanitize.test.ts with XSS vector tests Evaluation: PASS

Challenge 3.5: Spaced Repetition Module Tests

Requirement: SM-2 variant algorithm tested. Acceptance Criteria:

  • packages/shared/src/__tests__/spaced-repetition.test.ts exists Evaluation: PASS

Evaluation Summary

ChallengeResult
3.1 Worker Handler TestsPASS
3.2 AI Function TestsPASS
3.3 DB Query TestsPASS
3.4 Sanitization UtilityPASS
3.5 Spaced Rep TestsPASS

Score: 5/5 PASS