Lessons integration coverage: Phase 0-2 (fixture infra, catalog/attempt, anonymous journey) shipped #448

Closed
opened 2026-07-07 14:54:22 +00:00 by spikerj · 0 comments
Owner

Tracking ticket for the Lessons + code-execution/grading integration test expansion (see lessons_integration_tests plan).

Shipped in spikersoft-backend#174 (merged):

  • Phase 0: in-process code-execution + lesson-regrade worker hosted in TestEnvironmentFixture, wiring real Roslyn (C#) and DuckDB (SQL) grading paths for tests.
  • Phase 1: HTTP coverage for lesson catalog list/detail/journey/reading (with locale) and authenticated attempt-issuance + progress.
  • Phase 2: full anonymous (pre-login) learner journey - session, horizon, attempt, submit (pass/fail/daily-cap), and claim-into-account migration (idempotent).

Still to come (follow-up PRs, same plan):

  • Phase 3: authenticated end-to-end grading via worker (C# + SQL), free-play run, skill auto-award, batch verified/unverified, SignalR delivery smoke test.
  • Phase 4: tutorial completion (Tutorial vs Challenge, idempotent expired-but-complete) + anti-spoof (expired/foreign token rejected).
  • Phase 5: capability-gated Python/Node/C/C++ grading loop with controller-level 202+publish fallback.

Definition of green: full integration suite passes locally (Docker up), no regressions to the pre-existing ~110 tests.

Tracking ticket for the Lessons + code-execution/grading integration test expansion (see `lessons_integration_tests` plan). **Shipped** in spikersoft-backend#174 (merged): - Phase 0: in-process code-execution + lesson-regrade worker hosted in `TestEnvironmentFixture`, wiring real Roslyn (C#) and DuckDB (SQL) grading paths for tests. - Phase 1: HTTP coverage for lesson catalog list/detail/journey/reading (with locale) and authenticated attempt-issuance + progress. - Phase 2: full anonymous (pre-login) learner journey - session, horizon, attempt, submit (pass/fail/daily-cap), and claim-into-account migration (idempotent). **Still to come** (follow-up PRs, same plan): - Phase 3: authenticated end-to-end grading via worker (C# + SQL), free-play run, skill auto-award, batch verified/unverified, SignalR delivery smoke test. - Phase 4: tutorial completion (Tutorial vs Challenge, idempotent expired-but-complete) + anti-spoof (expired/foreign token rejected). - Phase 5: capability-gated Python/Node/C/C++ grading loop with controller-level 202+publish fallback. Definition of green: full integration suite passes locally (Docker up), no regressions to the pre-existing ~110 tests.
Sign in to join this conversation.