test: cover reschedule retry recovery
This commit is contained in:
parent
185f3f9706
commit
3e7d758782
|
|
@ -326,8 +326,9 @@ console.log(JSON.stringify({message,adopted,pending:controller.pending(),remaini
|
||||||
assert result["remaining"] == 1
|
assert result["remaining"] == 1
|
||||||
|
|
||||||
|
|
||||||
def test_reschedule_dialog_closes_as_soon_as_a_valid_move_is_confirmed():
|
def run_mounted_confirmation(*, fail_move: bool = False) -> dict:
|
||||||
result = run_controller("""
|
failure = "true" if fail_move else "false"
|
||||||
|
scenario = """
|
||||||
const mount=require('./frontend/today-week-reschedule.js').mount;
|
const mount=require('./frontend/today-week-reschedule.js').mount;
|
||||||
class Element {
|
class Element {
|
||||||
constructor(){this.listeners={};this.dataset={};this.children=[];this.open=false;this.disabled=false;this.value='';this.textContent='';}
|
constructor(){this.listeners={};this.dataset={};this.children=[];this.open=false;this.disabled=false;this.value='';this.textContent='';}
|
||||||
|
|
@ -351,8 +352,8 @@ const selectors={
|
||||||
};
|
};
|
||||||
const document={hidden:false,addEventListener(){},createElement:()=>new Element()};
|
const document={hidden:false,addEventListener(){},createElement:()=>new Element()};
|
||||||
const window={addEventListener(){},setTimeout(){}};
|
const window={addEventListener(){},setTimeout(){}};
|
||||||
let finishMove;
|
let finishMove,failMove;
|
||||||
const move=new Promise(resolve=>{finishMove=resolve;});
|
const move=new Promise((resolve,reject)=>{finishMove=resolve;failMove=reject;});
|
||||||
const today={revision:4,ids:['active'],estimates:{active:30}};
|
const today={revision:4,ids:['active'],estimates:{active:30}};
|
||||||
const weekState={revision:7,offline_snapshot:false,days:[]};
|
const weekState={revision:7,offline_snapshot:false,days:[]};
|
||||||
const week={load:async()=>weekState,review:()=>({days:[{
|
const week={load:async()=>weekState,review:()=>({days:[{
|
||||||
|
|
@ -367,12 +368,29 @@ await selectors['#today-week-reschedule-days'].children[0].emit('click');
|
||||||
const confirming=selectors['#confirm-today-week-reschedule'].emit('click');
|
const confirming=selectors['#confirm-today-week-reschedule'].emit('click');
|
||||||
await Promise.resolve();
|
await Promise.resolve();
|
||||||
const openWhileSaving=selectors['#today-week-reschedule'].open;
|
const openWhileSaving=selectors['#today-week-reschedule'].open;
|
||||||
finishMove({today:{revision:5,ids:[],estimates:{}},week:{revision:8,days:[]}});
|
if(__FAIL_MOVE__){
|
||||||
|
const error=new Error('Move unavailable. Try again.');error.status=500;failMove(error);
|
||||||
|
}else{
|
||||||
|
finishMove({today:{revision:5,ids:[],estimates:{}},week:{revision:8,days:[]}});
|
||||||
|
}
|
||||||
await confirming;
|
await confirming;
|
||||||
console.log(JSON.stringify({openWhileSaving,openAfterSaving:selectors['#today-week-reschedule'].open}));
|
console.log(JSON.stringify({openWhileSaving,openAfterSettled:selectors['#today-week-reschedule'].open}));
|
||||||
""")
|
"""
|
||||||
|
return run_controller(scenario.replace("__FAIL_MOVE__", failure))
|
||||||
|
|
||||||
assert result == {"openWhileSaving": False, "openAfterSaving": False}
|
|
||||||
|
def test_reschedule_dialog_closes_as_soon_as_a_valid_move_is_confirmed():
|
||||||
|
assert run_mounted_confirmation() == {
|
||||||
|
"openWhileSaving": False,
|
||||||
|
"openAfterSettled": False,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def test_reschedule_dialog_reopens_with_retry_state_when_confirm_fails():
|
||||||
|
assert run_mounted_confirmation(fail_move=True) == {
|
||||||
|
"openWhileSaving": False,
|
||||||
|
"openAfterSettled": True,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_mobile_active_today_reschedule_dialog_is_touch_safe_and_wired_into_release_bundle():
|
def test_mobile_active_today_reschedule_dialog_is_touch_safe_and_wired_into_release_bundle():
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user