Updated the calendar to improve opportunity display and navigation

This commit is contained in:
2026-10-27 03:22:10 -03:00
parent 7606643ff4
commit 1d5b28e95b
51 changed files with 1486 additions and 1237 deletions

View File

@@ -96,7 +96,7 @@ for (const family of ["chrome", "firefox"]) {
});
}
test("expired SPA session recovery handles 401, 403 and network errors, then releases its in-flight request", async () => {
test("expired SPA session recovery handles 401, 403 and network errors, then reuses its successful identity", async () => {
let attempts = 0;
const app = loadBackground({ fetch: async () => {
attempts++;
@@ -111,7 +111,8 @@ test("expired SPA session recovery handles 401, 403 and network errors, then rel
assert.deepEqual(first.debugRequests.map(entry => entry.httpStatus), [401, 403, null, 200]);
assert.deepEqual(app.removedTabs, [91]);
assert.equal((await app.dispatch({ type })).ok, true);
assert.equal(attempts, 5, "background must not persist identity after the shared request settles");
assert.equal(attempts, 4, "successful identity must not be fetched again");
assert.equal((await app.dispatch({ type })).debugRequests.length, 0);
assert.equal(app.tabs.length, 1);
});
@@ -273,3 +274,25 @@ for (const family of ["chrome", "firefox"]) {
assert.equal(attempts, payloads.length);
});
}
test("identity cache survives background recreation, shares windows and isolates containers", async () => {
const factory = new (require("node:vm").Script)(require("node:fs").readFileSync("src/services/spa/current-user.js", "utf8") + "\ncreateSpaCurrentUser").runInNewContext();
const data = {};
const sessionStorage = { async get(key) { return { [key]: data[key] }; }, async set(values) { Object.assign(data, values); } };
let calls = 0;
const deps = { sessionStorage, fetchJson: async () => { calls++; return validIdentity; } };
const service = factory(deps);
const sender = (windowId, cookieStoreId = "", incognito = false) => ({ tab: { windowId, cookieStoreId, incognito } });
await Promise.all([service.requestCurrentUser(sender(1)), service.requestCurrentUser(sender(2))]);
assert.equal(calls, 1);
await service.requestCurrentUser(sender(3));
assert.equal(calls, 1);
const restored = await factory(deps).requestCurrentUser(sender(4));
assert.equal(restored.user.id, validIdentity.user.id);
assert.equal(restored.debugRequests.length, 0);
assert.equal(calls, 1);
await service.requestCurrentUser(sender(1, "container-2"));
await service.requestCurrentUser(sender(1, "", true));
assert.equal(calls, 3);
assert.ok(Object.values(data).every(user => !user.token));
});