mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 19:04:02 +00:00
test(director): cover observer failures in session activate and clear
This commit is contained in:
1 parent
5d5e6c6845
commit
811eb7835d
1 file changed
+31
@@ -233,6 +233,37 @@ test('a throwing changed observer does not break session dispatch, activation, o
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('an observer that always throws cannot stop activate or clear', () => {
|
||||||
|
const warnings = [];
|
||||||
|
const origWarn = console.warn;
|
||||||
|
console.warn = (...args) => warnings.push(args);
|
||||||
|
try {
|
||||||
|
const session = createInteractionSession({
|
||||||
|
execute: () => true,
|
||||||
|
changed: () => {
|
||||||
|
throw new Error('observer failed');
|
||||||
|
},
|
||||||
|
});
|
||||||
|
session.activate([{ id: 'a' }, { id: 'b' }]);
|
||||||
|
assert.deepEqual(session.getState(), {
|
||||||
|
active: true,
|
||||||
|
busy: false,
|
||||||
|
selected: null,
|
||||||
|
count: 2,
|
||||||
|
});
|
||||||
|
session.clear();
|
||||||
|
assert.deepEqual(session.getState(), {
|
||||||
|
active: false,
|
||||||
|
busy: false,
|
||||||
|
selected: null,
|
||||||
|
count: 0,
|
||||||
|
});
|
||||||
|
assert.equal(warnings.length, 3);
|
||||||
|
} finally {
|
||||||
|
console.warn = origWarn;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
test('settled pack shots cannot take the same-shot seek shortcut after Stop released geometry', async () => {
|
test('settled pack shots cannot take the same-shot seek shortcut after Stop released geometry', async () => {
|
||||||
const { SceneDirector } = await import('../../scenes/director.js');
|
const { SceneDirector } = await import('../../scenes/director.js');
|
||||||
const shot = { id: 'shot', dataPackIds: ['pack'] };
|
const shot = { id: 'shot', dataPackIds: ['pack'] };
|
||||||
|
|||||||
Reference in new issue
Block a user