mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-09 04:44:01 +00:00
fix(cockpit): a place pack retried after a failure counts as failed only if the retry fails
This commit is contained in:
1 parent
e954734379
commit
f6dc89b4fa
3 files changed
+19
-2
No files matched your search
@@ -64,7 +64,7 @@ function notifyLoading() {
|
||||
|
||||
/**
|
||||
* A pack load that the loading status follows: on its way while it runs,
|
||||
* failed until a later load of it succeeds.
|
||||
* failed from a failure until it is tried again.
|
||||
* @template T
|
||||
* @param {string} name
|
||||
* @param {() => Promise<T>} load
|
||||
@@ -72,6 +72,8 @@ function notifyLoading() {
|
||||
*/
|
||||
export function reportedPlacePackLoad(name, load) {
|
||||
return async () => {
|
||||
// A retry is a fresh try: its batch ends on what this load does.
|
||||
failedPacks.delete(name);
|
||||
loadingPacks.add(name);
|
||||
notifyLoading();
|
||||
try {
|
||||
|
||||
@@ -32,6 +32,12 @@ test('a pack that would not load stays failed until it loads', async () => {
|
||||
await assert.rejects(load(), /offline/);
|
||||
assert.deepEqual(place.placePacksStatus(), { loading: false, failed: true });
|
||||
fail = false;
|
||||
assert.equal(await load(), 1);
|
||||
const retry = load();
|
||||
assert.deepEqual(
|
||||
place.placePacksStatus(),
|
||||
{ loading: true, failed: false },
|
||||
'a retry is not a failure until it fails',
|
||||
);
|
||||
assert.equal(await retry, 1);
|
||||
assert.deepEqual(place.placePacksStatus(), { loading: false, failed: false });
|
||||
});
|
||||
@@ -56,4 +56,13 @@ test('a load that lands ends complete; one that fails ends failed', () => {
|
||||
batch([loading, { loading: false, failed: true }]).terminal,
|
||||
'error',
|
||||
);
|
||||
// A retry after a failure that lands ends complete.
|
||||
assert.equal(
|
||||
batch([
|
||||
{ loading: false, failed: true },
|
||||
loading,
|
||||
{ loading: false, failed: false },
|
||||
]).terminal,
|
||||
'complete',
|
||||
);
|
||||
});
|
||||
Reference in new issue
Block a user