f96fdcb3b9
Lock health recording behind confirm-only state machines, reject public publishes for the health category, and ship the 14-day experiment Page Data templates with tests. Co-authored-by: Cursor <cursoragent@cursor.com>
28 lines
1.1 KiB
JavaScript
28 lines
1.1 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import {
|
|
inferBloodPressureContext,
|
|
markSuspectVsBaseline,
|
|
resolveQualityAfterConfirm,
|
|
validateBloodPressurePair,
|
|
} from './health-observation-validate.mjs';
|
|
|
|
test('blood pressure range and ordering', () => {
|
|
assert.equal(validateBloodPressurePair(128, 76).ok, true);
|
|
assert.equal(validateBloodPressurePair(50, 40).ok, false);
|
|
assert.equal(validateBloodPressurePair(120, 130).ok, false);
|
|
});
|
|
|
|
test('context is inferred from clock hour', () => {
|
|
assert.equal(inferBloodPressureContext('2026-09-02T07:20:00+08:00'), 'morning');
|
|
assert.equal(inferBloodPressureContext('2026-09-02T21:10:00+08:00'), 'evening');
|
|
assert.equal(inferBloodPressureContext('2026-09-02T14:00:00+08:00'), 'other');
|
|
});
|
|
|
|
test('large baseline deviation is suspect until the user confirms', () => {
|
|
const marked = markSuspectVsBaseline(190, 120);
|
|
assert.equal(marked.suspect, true);
|
|
assert.equal(resolveQualityAfterConfirm({ suspect: true, userCorrected: false }), 'ok');
|
|
assert.equal(resolveQualityAfterConfirm({ suspect: true, userCorrected: true }), 'user_corrected');
|
|
});
|