mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-15 15:52:21 +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,
|
* 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
|
* @template T
|
||||||
* @param {string} name
|
* @param {string} name
|
||||||
* @param {() => Promise<T>} load
|
* @param {() => Promise<T>} load
|
||||||
@@ -72,6 +72,8 @@ function notifyLoading() {
|
|||||||
*/
|
*/
|
||||||
export function reportedPlacePackLoad(name, load) {
|
export function reportedPlacePackLoad(name, load) {
|
||||||
return async () => {
|
return async () => {
|
||||||
|
// A retry is a fresh try: its batch ends on what this load does.
|
||||||
|
failedPacks.delete(name);
|
||||||
loadingPacks.add(name);
|
loadingPacks.add(name);
|
||||||
notifyLoading();
|
notifyLoading();
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -32,6 +32,12 @@ test('a pack that would not load stays failed until it loads', async () => {
|
|||||||
await assert.rejects(load(), /offline/);
|
await assert.rejects(load(), /offline/);
|
||||||
assert.deepEqual(place.placePacksStatus(), { loading: false, failed: true });
|
assert.deepEqual(place.placePacksStatus(), { loading: false, failed: true });
|
||||||
fail = false;
|
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 });
|
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,
|
batch([loading, { loading: false, failed: true }]).terminal,
|
||||||
'error',
|
'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