@kwiz/common
Version:
KWIZ common utilities and helpers for M365 platform
38 lines (28 loc) • 1.25 kB
JavaScript
import assert from 'assert/strict';
import test from 'node:test';
import { promiseLock, promiseOnce, sleepAsync } from './promises';
test('promiseOnce', async t => {
let promiseOnceTester = promiseOnce("promiseOnceTester", async() => {
return Date.now();
});
let value = await promiseOnceTester;
await t.test("First call", t => assert.strictEqual(value > 0, true));
//check cache
let value2 = await promiseOnceTester;
await t.test("Second call", t => assert.strictEqual(value === value2, true));
let value3 = await promiseOnceTester;
await t.test("Third call", t => assert.strictEqual(value === value3, true));
});
test('promisLock', async t => {
let promiseLockTester = async() => {
return new Date().getTime();
};
let p1 = promiseLock("promiseLockTest", promiseLockTester);
let p2 = promiseLock("promiseLockTest", promiseLockTester);
let v1 = await p1;
let v2 = await p2;
await sleepAsync(1);
let v3 = await promiseLock("promiseLockTest", promiseLockTester);
await t.test("During lock", t => assert.strictEqual(v1 === v2, true));
await t.test("After lock", t => assert.strictEqual(v1 === v3, false));
});