Personal Training OS: Test Cases
|
Type
|
Level
|
UID
|
PREFIX
|
REFS
|
Title
|
Statement
|
METHOD
|
AUTOMATED
|
|---|---|---|---|---|---|---|---|---|
|
SECTION
|
1 |
|
|
|
||||
|
TEST
|
1.1 |
|
|
|
Scope of this suite. TC-01 through TC-20 verify the v1.0 baseline (recorded baseline run 20/20 test cases Pass on 2026-07-05, plus 7/7 UAT Accept). TC-21 through TC-27 verify the post-release increments (2a-2c Garmin activities, Garmin daily wellness metrics, and Withings weight; 3 hockey auto-schedule; 4 MyFitnessPal nutrition at per-meal grain), added and executed in run-2 on 2026-07-10 (17/17 automated Pass). That run found and fixed defect D-08 (three sync scripts wrote rows without a Person relation) and hardened the baseline cases against live-data mutation. The increments are therefore formally verified, closing the operational-evidence-only gap noted at the v1.0 baseline. This element is a documentation note, not an executable test; it carries no Parent relation and asserts no result. See pm/project-state.md for the authoritative as-built state. |
|
|
|
|
TEST
|
1.2 |
|
|
A hockey session with Attendance = Did Not Attend has Counts Toward Training (auto) = false. |
|
|
||
|
TEST
|
1.3 |
|
Parents:
|
|
A hockey session with Attendance = Attended has Counts Toward Training (auto) = true. |
|
|
|
|
TEST
|
1.4 |
|
Parents:
|
|
A non-hockey session with Status = Completed has Counts Toward Training (auto) = true. |
|
|
|
|
TEST
|
1.5 |
|
Parents:
|
|
A non-hockey session with Status = Planned has Counts = false; setting Status = Completed flips it to true. |
|
|
|
|
TEST
|
1.6 |
|
Parents:
|
|
an example running shoe Total Miles = 16 (sum of Distance from the two linked runs, 11 + 5). |
|
|
|
|
TEST
|
1.7 |
|
Parents:
|
|
Linking a new run to the shoe increases Total Miles; unlinking returns it to the prior value. |
|
|
|
|
TEST
|
1.8 |
|
|
Secondary User exists in People and is selectable as Person on sessions/goals/metrics. |
|
|
||
|
TEST
|
1.9 |
|
|
Filtering by Person = Primary User vs Secondary User returns only that person's rows. |
|
|
||
|
TEST
|
1.10 |
|
Parents:
|
|
A hand-created session has Source = Manual. |
|
|
|
|
TEST
|
1.11 |
|
|
Kettlebells, Net, Barbell, Medicine ball = Not available; Stickhandling ball = Pending; the rest Available. |
|
|
||
|
TEST
|
1.12 |
|
|
The seeded Workout Templates reference only Available equipment. |
|
|
||
|
TEST
|
1.13 |
|
|
Example Half Marathon = Half Marathon / Goal 2:00:00; Example 5K = 5K. |
|
|
||
|
TEST
|
1.14 |
|
|
11-mile long run = 11 mi / Long; 5-mile hill repeats = 5 mi / Hills. |
|
|
||
|
TEST
|
1.15 |
|
|
The 11-mile run relates to Person, Running Shoe, Running Route, and Training Block. |
|
|
||
|
TEST
|
1.16 |
|
Parents:
|
|
The Sub-2:00 goal has a Race relation to the Example Half Marathon. |
|
|
|
|
TEST
|
1.17 |
|
|
A hockey session can relate to a Team A/Team B game without altering the source game DB. |
|
|
||
|
TEST
|
1.18 |
|
|
The Personal Training OS page is a child of Personal Dashboard, linked below Inbox. |
|
|
||
|
TEST
|
1.19 |
|
|
A session/check-in can be logged with low effort in the Notion mobile app. |
|
|
||
|
TEST
|
1.20 |
|
Parents:
|
|
The OS data can be exported from Notion and is restorable. |
|
|
|
|
TEST
|
1.21 |
|
|
At least one running, one strength, and one hockey Workout Template exist, plus Hockey Drills. |
|
|
||
|
TEST
|
1.22 |
|
|
Each Metrics/Check-ins row sourced from Garmin carries a garmin-metrics-<date> Source ID, an Imported At timestamp, and at least one wellness value. |
|
|
||
|
TEST
|
1.23 |
|
|
Each Metrics/Check-ins row sourced from Withings carries a withings-<grpid> Source ID, a Weight value, and an Imported At timestamp. |
|
|
||
|
TEST
|
1.24 |
|
|
Each Training Session row sourced from Garmin carries a Garmin Activity ID and an Imported At timestamp. |
|
|
||
|
TEST
|
1.25 |
|
|
Each Training Session row sourced from the Hockey DB links a source game (Gabagools or Bacon). |
|
|
||
|
TEST
|
1.26 |
|
|
Each Nutrition Log row sourced from MyFitnessPal carries an mfp-<date>-<meal> Source ID, a Meal, a Calories value, and an Imported At timestamp. |
|
|
||
|
TEST
|
1.27 |
|
|
No two synced rows within a database share a Source ID, confirming idempotent upserts across the Metrics, Nutrition, and Training Sessions databases. |
|
|
||
|
TEST
|
1.28 |
|
|
Every synced row (Garmin, Withings, MyFitnessPal, Hockey DB) across Metrics, Nutrition, and Training Sessions relates to a Person. This case found defect D-08; the fix and a 54-row backfill landed in run-2. |
|
|