Select your name first

Choose your name from the Tester dropdown at the top and click Save before filling out the form.

Tester

Courses QA — Comprehensive Walkthrough (Internal)

Jira: DLOW-194

What this is: The single comprehensive internal QA walkthrough for the Certificate / Course / Section admin batch. It combines:

  • All steps from DLOW-193 (baseline workflow coverage)
  • Plus additions from UAT guides specs 015–023 on main
  • Plus corrections where DLOW-193 conflicted with shipped UAT guides (credentials, RBAC)

Use this document only for QA — you do not need to run DLOW-193 separately.

Not business UAT — internal QA before release.

Also see:


Before you start

Start here: https://lsuoce-development.fly.dev/

  1. Click Log In on the homepage.
  2. Seed demo data if needed: QA Seed ToolsCCS-01 UAT — Legal Research & WritingSeed now
  3. Open the catalog admin dashboard: https://lsuoce-development.fly.dev/dashboard/catalog/

Log in as:

WhoEmailPasswordUse for
Admin (most bootstrap steps)admin@lsu.edupassword12!Django admin fallback, superuser checks
Program Manager (primary CE user)pm_catalog@example.compassword12!Catalog workspace, course forms, preview
Enrollment Adminenrollment.admin@lsu.edupassword12!RBAC denial tests only — expect 403

Demo anchor: PLG-LRW-201 — Legal Research & Writing under Paralegal Studies Certificate.

First visit tip: Site may be asleep. If you see a 502, wait 15 seconds and reload.

Primary bookmark: Catalog admin dashboard

Fallback (data-model / seed checks):

Costing unit dropdown may error on preview — use certificate name search (e.g. "Paralegal").


General Notes & Uploads

Test in this order

StepWhatBuild ticketUAT guide
1Foundation — data modelDLOW-171015
2aSection lifecycleDLOW-172016
2bShared workspaceDLOW-173017
2cCreate / duplicate courseDLOW-174018
2dCancelled lifecycle (NEW)DLOW-191022 spec
3Internal previewDLOW-187019
4aDefaults & inheritanceDLOW-175020
4bDrop / transfer windowsDLOW-190023
4cPricing & feesDLOW-176021

Progress:


Part 1 — Foundation (CCS-01)

Task: DLOW-171

In plain English: Before staff can build certificates and courses, the system needs the basic records — costing units, certificates, courses, sections — wired together correctly. A course must belong to a costing unit. Certificates stand on their own (not tucked under a course).

Workflow area: Admin setup and costing-unit context (spec §3–§4.1)

Walkthrough 1.1 — Costing units exist

  1. Sign in and open the catalog admin dashboard: https://lsuoce-development.fly.dev/dashboard/catalog/
  2. Navigate to Costing units in the dashboard (or use Django admin → Costing units if dashboard list unavailable).
  3. You should see a list. Paralegal (PL) or similar is fine.
Verify

Walkthrough 1.2 — Certificates are standalone

  1. In the catalog dashboard, navigate to Certificates (or Certificates admin).
  2. Open an existing certificate or add a new one.
  3. You should see a costing unit field. Saving should not require picking a parent course first.
Verify

Walkthrough 1.3 — Courses need a costing unit

  1. In the catalog dashboard, navigate to Courses and create a new course (or Add course in admin).
  2. Try to save without choosing a costing unit.
  3. The system should stop you (validation error). Then pick a costing unit, fill required fields, and save — that should work.
Verify

Walkthrough 1.4 — Sections and fees link to courses

  1. In the catalog dashboard, open a course that already exists (prefer PLG-LRW-201 if seeded).
  2. Add a section linked to that course (via the dashboard or inline).
  3. Add a fee component on the course.
  4. After save, both should still show and point at the right course.
Verify

Walkthrough 1.5 — Academic fields on courses and sections

  1. Open PLG-LRW-201 in Django admin.
  2. Confirm Credit type, Contact hours, CEU override, Grading basis on the course.
  3. Open a linked section — Periodicity type, optional enrollment dates, section-level academic overrides.
Verify

Walkthrough 1.6 — Dual periodicity on one course

  1. On PLG-LRW-201, scroll to Sections inline.
  2. Confirm two rows: cohort/term (Fall 2026) and rolling/open enrollment.
Verify

Walkthrough 1.7 — Certificate requirement versioning

  1. Open Certificate requirement versions.
  2. Each row points at a Certificate with a Version number — new versions add rows.
Verify

Edge cases: empty CEU (not zero); cohort/term section without cohort link still saves.

Part 1 complete: · Issues? File on DLOW-171


Screenshots
🖼 Paste Ctrl+V, drop images, or Up to 5 images · 2 MB each · attach PNGs from ZIP to Jira

Part 2a — Section lifecycle (CCS-02)

Task: DLOW-172 · Needs Part 1 first

In plain English: Sections move through Draft → Ready → Active → Inactive. Staff shouldn't be able to jump to nonsense states. Once Inactive, a section shouldn't reopen through normal admin — but copying it to start a new section should still work.

Workflow area: Section lifecycle (spec §5.5)

  1. In the catalog dashboard, navigate to Sections (or open a section from within a course).
  2. Open a section (create one if needed).
  3. Find the status field — you should see Draft, Ready, Active, Inactive (or clear equivalents).
  4. Try moving Draft → Ready → Active. Each save should stick after reload.
  5. Move one section to Inactive. Try to reopen it the normal way — it should be blocked.
  6. From that Inactive section, try duplicate / copy to new section — that should still be allowed.
Verify

If dashboard transition UI is unavailable, verify lifecycle via DLOW-172 / dev pytest — admin dropdown may bypass guards.

Confirm PLG-LRW-201 sections use new lifecycle vocabulary (not legacy closed/canceled). Edge cases: Active outside enrollment window; Ready but hidden; OQ-2 Inactive terminal.

Part 2a complete: · Issues? File on DLOW-172


Screenshots
🖼 Paste Ctrl+V, drop images, or Up to 5 images · 2 MB each · attach PNGs from ZIP to Jira

Part 2b — Shared admin workspace (CCS-03)

Task: DLOW-173 · Needs Part 1 first

In plain English: Staff should move certificate → course → section in one workspace without hopping between disconnected admin pages. Lists should show draft/status. There should be a placeholder spot for integration errors (even if empty today).

Workflow area: Shared workspace (spec §3, §8.1)

Log in as: pm_catalog@example.com / password12!

Start here: Catalog dashboard

  1. From the workspace home, you should see a certificate list with search or filter.
  2. Click a certificate → see courses for that certificate only.
  3. Click a course → see sections for that course only.
  4. Use back or breadcrumbs — you shouldn't lose your place.
  5. Try Create, Duplicate, and Edit — forms should open in context and return you to the list after save.
  6. Look for status badges (Draft / Ready / Active / Inactive) on course/section lists.
  7. Find the integration exceptions area — empty is OK; it shouldn't show fake errors.
Verify

Walkthrough 2b.8 — Search and filters on each level

  1. On certificate list, search (e.g. "Paralegal").
  2. On course list, use filters if available.
  3. On section list, confirm scoped to parent course.
Verify

Walkthrough 2b.9 — Lifecycle badge demo

If PLG-LRW-201 sections all show Active: use Django admin sections to set Draft/Ready/Inactive on one row each — reload workspace.

Verify

Walkthrough 2b.10 — RBAC: Enrollment Admin denied

  1. Sign in as enrollment.admin@lsu.edu / password12!.
  2. Open catalog dashboard.
Verify

| Observation | Expected? |

| --- | --- |

| Stub create/edit pages | Yes |

| Exceptions count zero | Yes |

| Enrollment Admin 403 | Yes — by design |

| Costing unit dropdown errors | Known — use name search |

Part 2b complete: · Issues? File on DLOW-173


Screenshots
🖼 Paste Ctrl+V, drop images, or Up to 5 images · 2 MB each · attach PNGs from ZIP to Jira

Part 2c — Create and duplicate a course (CCS-04)

Task: DLOW-174 · Needs Part 1 first

In plain English: Staff create a course under a costing unit, optionally duplicate an old one, save as draft or mark ready, and see validation before moving on.

Workflow area: Course creation flow (spec §4.2 → §4.5)

Log in as: pm_catalog@example.com

  1. In the catalog dashboard, navigate to Courses and create a new course. Pick a costing unit (e.g. Paralegal).
  2. Fill title, description, modality, internal notes, application-required — save.
  3. Confirm the course appears on the list under the right costing unit.
  4. Pick a course that has section dates on an old section. Duplicate it (prefer PLG-LRW-201).
  5. New course should copy course settings but not copy old section start/end dates.
  6. Save a course as draft, then later mark ready for section creation — both should stick; ready should suggest a next step.
  7. Leave a required field blank and open review/summary — you should see what's wrong and what to fix.
Verify

Walkthrough 2c.8 — Academic metadata and live CEU preview

  1. Set contact hours / CEU fields on course form.
  2. Confirm live CEU preview updates (if shown).
Verify

Walkthrough 2c.9 — Editorial content

  1. Fill description / editorial fields — save and reload.
Verify

Walkthrough 2c.10 — Duplicate with unique course code

  1. Duplicate PLG-LRW-201 keeping same course code → save fails.
  2. Unique code (e.g. PLG-LRW-201-COPY-QA) → save succeeds.
Verify

Walkthrough 2c.11 — Mark ready → section placeholder

  1. Mark course readyCreate section link → placeholder page (CCS-07 future).
Verify

Part 2c complete: · Issues? File on DLOW-174


Screenshots
🖼 Paste Ctrl+V, drop images, or Up to 5 images · 2 MB each · attach PNGs from ZIP to Jira

Part 2d — Cancelled lifecycle (CCS-02a)

Task: DLOW-191 · Needs Part 2a

Source: 022 spec

In plain English: Cancelled is a fifth state — distinct from Inactive. Cancelled = called off; Inactive = archived after delivery. Both terminal; both copyable.

  1. Confirm Cancelled as lifecycle option (admin bootstrap or dev demo).
  2. Transition section to Cancelled from Draft, Ready, or Active.
  3. Attempt reopen from Cancelledblocked.
  4. Copy from Cancelled → new Draft section.
  5. Completion date: default last meeting + 10 business days; staff override persists.
  6. Regression: Inactive retains enrollments; copy-from-Inactive still works.
Verify

Part 2d complete: · Issues? File on DLOW-191


Screenshots
🖼 Paste Ctrl+V, drop images, or Up to 5 images · 2 MB each · attach PNGs from ZIP to Jira

Part 3 — Internal preview page (CCS-04a)

Task: DLOW-187 · Needs Parts 1 and 2c

In plain English: QA gets an internal-only preview that shows courses (and later certs/sections) including drafts — with a badge for lifecycle state. Not the public website; login required.

Workflow area: Internal preview (spec §8)

Log in as: pm_catalog@example.com

Find the preview URL on the build (linked from workspace Preview (internal)). Must require login.

  1. While signed out, open the preview URL — you should not see content (redirect to login or 403).
  2. Sign in and open preview — you should see courses from Part 2c.
  3. Each course should show a state badge matching what you set in admin.
  4. Draft courses should still appear (preview is not the public site).
  5. When sections/certs exist later, reload — they should show up too.
Verify

Walkthrough 3.5 — Section preview and inheritance

  1. From PLG-LRW-201 section list, open Preview (internal) on a section.
  2. Inherited values match course defaults where configured.
Verify

Walkthrough 3.6 — Certificate preview

  1. From certificate list, Preview (internal) on Paralegal Studies Certificate.
  2. Confirm name, costing unit, requirement version (e.g. v1).
Verify

Walkthrough 3.7 — Enrollment Admin denied on preview

  1. As enrollment.admin@lsu.edu, open preview URL.
Verify

Walkthrough 3.8 — QA UAT shortcut bar (optional)

If visible, confirm shortcut bar — optional, not blocking.

Part 3 complete: · Issues? File on DLOW-187


Screenshots
🖼 Paste Ctrl+V, drop images, or Up to 5 images · 2 MB each · attach PNGs from ZIP to Jira

Part 4a — Course defaults & inheritance (CCS-05)

Task: DLOW-175 · Needs Part 2c

In plain English: When setting up a course, staff choose defaults (modality, notes for section builders) and decide what carries down to new sections. Section builders should be able to override those defaults later.

Workflow area: Inheritance rules (spec §4.3)

Log in as: pm_catalog@example.com

  1. Edit a course and set default modality and notes for section creators — save and reload to confirm they stick.
  2. On the same form, find controls showing what inherits to new sections (modality, fees, refund rules).
  3. Create or edit a section from that course — inherited values should pre-fill but stay editable.
  4. Check the preview page — inherited values should match what you set on the course.
Verify

Walkthrough 4a.5 — Inheritance panel on create

  1. Create course — locate Section defaults & inheritance panel on form.
Verify

Walkthrough 4a.6 — Core field validation gates inheritance

  1. Leave required CCS-04 field empty — inheritance cannot save until core fields valid.
Verify

Walkthrough 4a.7 — Tighten inheritance rule toggles

  1. Set inherit/editable matrix (modality, fees, refund policy) — save, reload.
Verify

Walkthrough 4a.8 — Duplicate copies inheritance

  1. Duplicate course with custom inheritance — new course copies settings.
Verify

Part 4a complete: · Issues? File on DLOW-175


Screenshots
🖼 Paste Ctrl+V, drop images, or Up to 5 images · 2 MB each · attach PNGs from ZIP to Jira

Part 4b — Drop and transfer windows (CCS-05a)

Task: DLOW-190 · Needs Part 4a

In plain English: Courses can set how many days learners have to self-drop or self-transfer. For Paralegal, both should default to 0 — meaning staff must handle drops/transfers, not learners.

Workflow area: Inheritance rules — drop/transfer (spec §4.3)

Log in as: pm_catalog@example.com

  1. On a Paralegal course, find public drop-request window and public transfer-request window.
  2. On a new Paralegal course, both should default to 0.
  3. Save non-zero values on a test course — they should persist (you won't test learner self-service UI in this batch).
  4. Create a section from a course with windows set — section should inherit those values.
Verify

Walkthrough 4b.5 — Review summary staff-only policy

  1. With windows at 0, open review/summary — text explains staff-only drop/transfer policy.
Verify

Walkthrough 4b.6 — Open drop only, transfer staff-only

  1. Set drop window open, transfer at 0 — save persists.
Verify

Walkthrough 4b.7 — Non-Paralegal explicit windows

  1. On non-Paralegal course (e.g. PCE certificate), set non-zero windows — save persists.
Verify

Walkthrough 4b.8 — Duplicate copies windows

  1. Duplicate priced/windowed course — windows copy forward.
Verify

Walkthrough 4b.9 — Preview shows window policy

  1. Preview (internal) reflects window policy text.
Verify

Part 4b complete: · Issues? File on DLOW-190


Screenshots
🖼 Paste Ctrl+V, drop images, or Up to 5 images · 2 MB each · attach PNGs from ZIP to Jira

Part 4c — Pricing and fee components (CCS-06)

Task: DLOW-176 · Needs Part 2c

In plain English: Staff attach the fee breakdown to a course — base price, line items, GL codes for finance — so checkout and reporting stay aligned.

Workflow area: Pricing & fees (spec §4.4)

Log in as: pm_catalog@example.com

  1. Open a course and set base price (or price structure) — save.
  2. Add fee components (label, amount, GL code, refundable yes/no) — save.
  3. Confirm each component shows its GL code clearly on the form.
  4. Open section create for that course — fee-related defaults should carry down; overriding shouldn't silently drop GL info.
Verify

Walkthrough 4c.5 — Base price on review summary

  1. Set base price — confirm visible on review/summary.
Verify

Walkthrough 4c.6 — Fee reconciliation blocks mismatch

  1. Add fee lines that do not sum to base price — save blocked with clear message.
Verify

Walkthrough 4c.7 — Remove fee component row

  1. Delete a fee line — save reconciled total.
Verify

Walkthrough 4c.8 — Duplicate carries fee template

  1. Duplicate PLG-LRW-201 (or priced course) — fee template copies.
Verify

Walkthrough 4c.9 — Preview shows pricing

  1. Preview (internal) shows fee/pricing display.
Verify

Part 4c complete: · Issues? File on DLOW-176


Screenshots
🖼 Paste Ctrl+V, drop images, or Up to 5 images · 2 MB each · attach PNGs from ZIP to Jira

When something fails

  1. Note what you did, what you expected, and what happened instead (screenshot helps).
  2. File a bug on the matching build ticket (DLOW-171, 172, etc.).
  3. If it might be a policy question rather than a broken button, say so — some rules are still being confirmed (OQ-2, OQ-4, OQ-5, OQ-6).

Crosswalk — NEW items → source

WalkthroughSource
Demo anchor, RBACGap scan vs DLOW-193
1.5–1.7015 uat-guide
2a correction + PLG-LRW-201016 uat-guide
2b.8–2b.10017 uat-guide
2c.8–2c.11018 uat-guide
Part 2d022 spec
3.5–3.8019 uat-guide
4a.5–4a.8020 uat-guide
4b.5–4b.9023 uat-guide
4c.5–4c.9021 uat-guide

Sign-off

Tester name
Date
Environmentlsuoce-development.fly.dev
All 9 parts passed?[ ] Yes [ ] No — see linked bugs
Technical companion reviewed?[ ] DLOW-192
Supersedes separate DLOW-193 run?[ ] Yes — this is the comprehensive single task