Files
qinglong/packages/ql3-local-admin/test/pluginPackageApprovedAction.test.cjs
T

55 lines
1.7 KiB
JavaScript

const assert = require('node:assert/strict');
const { DatabaseSync } = require('node:sqlite');
const { test } = require('node:test');
const {
createLocalPluginPackageApprovedActionDispatcher,
LOCAL_PLUGIN_PACKAGE_DISPATCH_BATCH_LIMITS,
} = require('@qinglong/local-admin/package-approved-action');
const {
LocalSqliteOperationAuthority,
} = require('@qinglong/local-sqlite/operation-authority');
test('composes caller-driven edge and standalone dispatchers behind one SQLite authority', async (t) => {
const client = new DatabaseSync(':memory:');
t.after(() => client.close());
const authority = new LocalSqliteOperationAuthority(client);
let id = 0;
const limits = [];
for (const profile of ['edge', 'standalone']) {
const dispatcher = createLocalPluginPackageApprovedActionDispatcher({
authority,
profile,
owner: `package_dispatcher_${profile}`,
clock: () => 100,
createId: () => `dispatcher-id-${++id}`,
});
dispatcher.repository.listDueExecutions = async (query) => {
limits.push(query.limit);
return { executions: [], truncated: false };
};
assert.deepEqual(await dispatcher.dispatchBatch(), {
scanned: 0,
claimed: 0,
started: 0,
succeeded: 0,
failed: 0,
blocked: 0,
retrying: 0,
deferred: 0,
recoveryRequired: 0,
alreadyTerminal: 0,
unavailable: 0,
truncated: false,
});
}
assert.deepEqual(limits, [
LOCAL_PLUGIN_PACKAGE_DISPATCH_BATCH_LIMITS.edge,
LOCAL_PLUGIN_PACKAGE_DISPATCH_BATCH_LIMITS.standalone,
]);
assert.equal(
require('..').createLocalPluginPackageApprovedActionDispatcher,
undefined,
);
});