Loading comcipapic to establish a session for SR requests
This commit is contained in:
47
tests/srSessionPreparation.test.cjs
Normal file
47
tests/srSessionPreparation.test.cjs
Normal file
@@ -0,0 +1,47 @@
|
||||
const assert = require("node:assert/strict");
|
||||
const { test } = require("node:test");
|
||||
const { loadApplication } = require("./support/application.cjs");
|
||||
|
||||
test("preparation runs once, shares pending work and reports loading and completion", async () => {
|
||||
const app = loadApplication("content");
|
||||
const progress = [];
|
||||
let requests = 0;
|
||||
let resolveUser, resolveSession;
|
||||
app.currentUser.ensure = () => new Promise(resolve => { resolveUser = resolve; });
|
||||
app.currentUser.allowsCrmActivities = () => true;
|
||||
app.activityProgress.update = (...args) => progress.push(args);
|
||||
app.debugContentLog.appendBackgroundRequestLog = () => {};
|
||||
app.platformContentMessages.sendRuntimeMessage = message => {
|
||||
assert.equal(message.type, "opportunitiesExtension.prepareSrSession");
|
||||
requests += 1;
|
||||
return new Promise(resolve => { resolveSession = resolve; });
|
||||
};
|
||||
const first = app.srSessionPreparation.ensure();
|
||||
assert.equal(app.srSessionPreparation.ensure(), first);
|
||||
assert.equal(requests, 0, "identity must load first");
|
||||
resolveUser();
|
||||
await new Promise(resolve => setImmediate(resolve));
|
||||
assert.deepEqual(progress, [["session", "running"]]);
|
||||
resolveSession({ ok: true });
|
||||
await first;
|
||||
await app.srSessionPreparation.ensure();
|
||||
assert.equal(requests, 1);
|
||||
assert.deepEqual(progress.at(-1), ["session", "complete"]);
|
||||
});
|
||||
|
||||
test("SALES_REP skips preparation; failed preparation does not auto-repeat or reject modal loading", async () => {
|
||||
for (const allowed of [false, true]) {
|
||||
const app = loadApplication("content");
|
||||
let requests = 0;
|
||||
const progress = [];
|
||||
app.currentUser.ensure = async () => {};
|
||||
app.currentUser.allowsCrmActivities = () => allowed;
|
||||
app.activityProgress.update = (...args) => progress.push(args);
|
||||
app.debugContentLog.appendBackgroundRequestLog = () => {};
|
||||
app.platformContentMessages.sendRuntimeMessage = async () => { requests += 1; return { ok: false }; };
|
||||
await app.srSessionPreparation.ensure();
|
||||
await app.srSessionPreparation.ensure();
|
||||
assert.equal(requests, allowed ? 1 : 0);
|
||||
assert.deepEqual(progress, allowed ? [["session", "running"], ["session", "error"]] : []);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user