Implemented filters for Service Requests and Actions
This commit is contained in:
@@ -62,6 +62,44 @@ function contentFixture(send) {
|
||||
return app;
|
||||
}
|
||||
|
||||
test("Actions completion includes queued calls, shared pending records, failures and cache writes", async () => {
|
||||
const pending = [];
|
||||
let finishWrite;
|
||||
const app = contentFixture(() => new Promise(resolve => pending.push(resolve)));
|
||||
app.activityCache.read = async () => null;
|
||||
app.activityCache.write = () => new Promise(resolve => { finishWrite = resolve; });
|
||||
const products = { items: Array.from({ length: 5 }, (_, i) => ({ RevnId: String(i + 1) })) };
|
||||
let complete = false, sharedComplete = false;
|
||||
const batch = app.opportunityWorkloadActions.loadProducts(products, true, { cachedAt: 200 }).then(() => { complete = true; });
|
||||
const shared = app.opportunityWorkloadActions.loadProducts(products).then(() => { sharedComplete = true; });
|
||||
await flush();
|
||||
assert.equal(pending.length, 4);
|
||||
pending.slice(0, 4).forEach(resolve => resolve({ ok: false, error: "Synthetic" }));
|
||||
await flush();
|
||||
assert.equal(pending.length, 5);
|
||||
assert.equal(complete, false);
|
||||
assert.equal(sharedComplete, false);
|
||||
pending[4]({ ok: true, actions: [], hasNext: false });
|
||||
await flush();
|
||||
assert.equal(complete, false, "cache write still pending");
|
||||
finishWrite();
|
||||
await batch;
|
||||
await shared;
|
||||
assert.equal(complete, true);
|
||||
assert.equal(sharedComplete, true);
|
||||
});
|
||||
|
||||
test("Actions reset settles discarded queue entries without waiting for unstarted requests", async () => {
|
||||
const pending = [];
|
||||
const app = contentFixture(() => new Promise(resolve => pending.push(resolve)));
|
||||
const batch = app.opportunityWorkloadActions.loadProducts({ items: Array.from({ length: 8 }, (_, i) => ({ RevnId: String(i) })) });
|
||||
await flush();
|
||||
app.opportunityWorkloadActions.reset(false);
|
||||
pending.forEach(resolve => resolve({ ok: true, actions: [], hasNext: false }));
|
||||
await batch;
|
||||
assert.equal(pending.length, 4);
|
||||
});
|
||||
|
||||
test("actions aggregate all products, share RevnId queries across Reference changes and restart on reopen", async () => {
|
||||
const calls = [];
|
||||
const app = contentFixture(async message => {
|
||||
|
||||
Reference in New Issue
Block a user