fix: recover server-confirmed Today breaks (Closes #1274)
This commit is contained in:
1 parent
ce9301f145
commit
a629b5a93e
3 files changed
+51
No files matched your search
@@ -4,6 +4,7 @@ from pathlib import Path
|
||||
|
||||
|
||||
SOURCE = Path(__file__).parents[1] / "frontend" / "today-session-sync.js"
|
||||
TIMER = Path(__file__).parents[1] / "frontend" / "today-timer.js"
|
||||
|
||||
|
||||
def run_node(script: str) -> dict:
|
||||
@@ -92,6 +93,43 @@ const sync=createTodaySessionSync({
|
||||
assert result["claimed"]["device_id"] == "desktop-b"
|
||||
|
||||
|
||||
def test_owner_refresh_recovers_a_server_confirmed_break_missing_from_device_state():
|
||||
result = run_node(
|
||||
f"""
|
||||
const createTimer = require({json.dumps(str(TIMER))});
|
||||
const values = new Map();
|
||||
const storage = {{
|
||||
getItem:key=>values.get(key)||null,
|
||||
setItem:(key,value)=>values.set(key,value),
|
||||
}};
|
||||
const timer = createTimer({{storage,getLogin:()=> 'timmy',now:()=>100000}});
|
||||
timer.adopt('issue:r:42:', 90000, false);
|
||||
let rendered = 0;
|
||||
const remote = {{
|
||||
revision:3,device_id:'phone-a',identity:'issue:r:42:',elapsed_ms:90000,
|
||||
running:false,break_deadline_at:400000,updated_at:10,
|
||||
}};
|
||||
const sync = createTodaySessionSync({{
|
||||
getDeviceId:()=> 'phone-a',fetchJson:async()=>remote,timer,
|
||||
onOwnedRestore:()=>{{rendered += 1;}},
|
||||
}});
|
||||
(async()=>{{
|
||||
await sync.refresh();
|
||||
process.stdout.write(JSON.stringify({{breakSnapshot:timer.breakSnapshot(),rendered}}));
|
||||
}})().catch(error=>{{console.error(error);process.exit(1);}});
|
||||
"""
|
||||
)
|
||||
|
||||
assert result == {
|
||||
"breakSnapshot": {
|
||||
"identity": "issue:r:42:",
|
||||
"deadline_at": 400_000,
|
||||
"expired": False,
|
||||
},
|
||||
"rendered": 1,
|
||||
}
|
||||
|
||||
|
||||
def test_break_handoff_summary_is_actionable_and_privacy_safe():
|
||||
result = run_node(
|
||||
r"""
|
||||
|
||||
Reference in new issue
Block a user