Skip to content

test: regression coverage for #175 (resolvedSeries active strap id threading) - #191

Merged
ryanbr merged 1 commit into
ryanbr:mainfrom
TheBoroer:test/resolved-series-active-strap-regression
Jul 10, 2026
Merged

ryanbr merged 1 commit into
ryanbr:mainfrom
TheBoroer:test/resolved-series-active-strap-regression

Conversation

@TheBoroer

@TheBoroer TheBoroer commented Jul 10, 2026 •

Copy link
Copy Markdown

What this PR does

Follow-up to #175, which fixed REST resolution after a strap re-add but shipped without tests. That bug surfaced in two places, both fed by the same resolvedSeries read: the Key Metrics REST card showing "no data", and the REST circle in the Today header (the "Charge / Effort / Rest" trio) stuck on "Calibrating". This adds two regression suites that pin the fix:

Refs #172, #175.

Type of change

  • Bug fix
  • New feature
  • Refactor / cleanup
  • Documentation
  • CI / tooling

How it was tested

No BLE or protocol changes — tests only. ./gradlew testFullDebugUnitTest: 2394 tests, 0 failures, 0 skipped (includes the 5 new tests). Both new suites were also verified to fail against the pre-#175 call sites (legacy canonical-default resolution reproduces the "no data" shape).

Checklist

  • Swift package tests pass for any package I touched (swift test in Packages/<name>)
  • Android unit tests pass if I touched android/ (./gradlew testFullDebugUnitTest)
  • No new build warnings introduced
  • UI changes use only StrandDesign tokens — no hardcoded colors, fonts, or spacing
  • No hardcoded hex frame bytes; protocol facts live in the schema / decoders
  • Follows the conventions in docs/CONTRIBUTING.md
  • I did not commit generated output (Strand.xcodeproj/) or any secrets/keystores

Related issues

Refs #172, #175

… id threading)

Follow-up to ryanbr#175, which shipped without tests. Two new suites pin the fix:

- ResolvedSeriesActiveStrapTest (behavioral, Proxy-stub dao, no Room):
  threading the active strap id resolves scores banked under
  "<activeStrapId>-noop" after a strap re-add; the legacy canonical
  default misses them (the ryanbr#172 'Calibrating / no data' symptom, kept as
  a documented failure shape); single-strap installs resolve identically
  threaded or not; the ryanbr#1008 union holds through the threaded read.

- ResolvedSeriesCallSiteAuditTest (source census): scans com/noop/ui for
  resolvedSeries( call sites and fails any caller that doesn't name
  strapDeviceId — the regression ryanbr#175 fixed compiles silently otherwise.

Refs ryanbr#172, ryanbr#175
@TheBoroer
TheBoroer marked this pull request as ready for review July 10, 2026 04:11
@ryanbr
ryanbr merged commit e7e0b59 into ryanbr:main Jul 10, 2026
DX23876 pushed a commit to DX23876/noop that referenced this pull request Jul 22, 2026
… id threading) (ryanbr#191)

Follow-up to ryanbr#175, which shipped without tests. Two new suites pin the fix:

- ResolvedSeriesActiveStrapTest (behavioral, Proxy-stub dao, no Room):
  threading the active strap id resolves scores banked under
  "<activeStrapId>-noop" after a strap re-add; the legacy canonical
  default misses them (the ryanbr#172 'Calibrating / no data' symptom, kept as
  a documented failure shape); single-strap installs resolve identically
  threaded or not; the ryanbr#1008 union holds through the threaded read.

- ResolvedSeriesCallSiteAuditTest (source census): scans com/noop/ui for
  resolvedSeries( call sites and fails any caller that doesn't name
  strapDeviceId — the regression ryanbr#175 fixed compiles silently otherwise.

Refs ryanbr#172, ryanbr#175
simoncad7 pushed a commit to simoncad7/noop that referenced this pull request Aug 17, 2026
… id threading) (ryanbr#191)

Follow-up to ryanbr#175, which shipped without tests. Two new suites pin the fix:

- ResolvedSeriesActiveStrapTest (behavioral, Proxy-stub dao, no Room):
  threading the active strap id resolves scores banked under
  "<activeStrapId>-noop" after a strap re-add; the legacy canonical
  default misses them (the ryanbr#172 'Calibrating / no data' symptom, kept as
  a documented failure shape); single-strap installs resolve identically
  threaded or not; the ryanbr#1008 union holds through the threaded read.

- ResolvedSeriesCallSiteAuditTest (source census): scans com/noop/ui for
  resolvedSeries( call sites and fails any caller that doesn't name
  strapDeviceId — the regression ryanbr#175 fixed compiles silently otherwise.

Refs ryanbr#172, ryanbr#175
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants