mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-09-12 20:58:31 +00:00
58 lines
3.0 KiB
JavaScript
58 lines
3.0 KiB
JavaScript
const { test } = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { loadJobs, dispatch, makeProvider, enqueuePayload, diagnosticsSnapshot, captureEvents } = require('./jobs_test_harness');
|
|
|
|
test('legacy bridge hits are recorded as diagnostics-only compatibility shims', async () => {
|
|
const window = loadJobs();
|
|
const events = captureEvents(window);
|
|
const { provider } = makeProvider({ providerId: 'provider.bridge' });
|
|
await dispatch(window, 'register-provider', { provider });
|
|
const enqueued = await dispatch(window, 'enqueue', enqueuePayload({ providerId: 'provider.bridge', logicalJobKey: 'legacy-key' }));
|
|
|
|
const result = await dispatch(window, 'record-bridge-hit', {
|
|
bridgeId: 'jobs.legacy-plugin-queue',
|
|
legacySurface: 'legacy-plugin-queue',
|
|
pluginId: 'legacy_plugin',
|
|
operation: 'enqueue',
|
|
logicalJobKey: 'legacy-key',
|
|
safeReason: 'legacy queue adapter used',
|
|
});
|
|
const runtimeSnapshot = window.slopsmith.capabilities.snapshotDiagnostics();
|
|
const diagnostics = diagnosticsSnapshot(window);
|
|
|
|
assert.equal(result.status, 'applied');
|
|
assert.equal(result.payload.bridge.jobId, enqueued.payload.job.jobId);
|
|
assert.equal(result.payload.bridge.diagnosticsOnly, true);
|
|
assert.ok(runtimeSnapshot.compatibilityShims.some(shim => shim.capability === 'jobs' && shim.status === 'used'));
|
|
assert.equal(diagnostics.bridgeHits.length, 1);
|
|
assert.ok(events.some(event => event.event === 'bridge-hit'));
|
|
});
|
|
|
|
test('duplicate logical jobs are suppressed and remain tied to the active job', async () => {
|
|
const window = loadJobs();
|
|
const { provider } = makeProvider({ providerId: 'provider.duplicate' });
|
|
await dispatch(window, 'register-provider', { provider });
|
|
|
|
const first = await dispatch(window, 'enqueue', enqueuePayload({ providerId: 'provider.duplicate', logicalJobKey: 'same-job' }));
|
|
const second = await dispatch(window, 'enqueue', enqueuePayload({ providerId: 'provider.duplicate', logicalJobKey: 'same-job' }));
|
|
|
|
assert.equal(second.status, 'applied');
|
|
assert.equal(second.payload.duplicate, true);
|
|
assert.equal(second.payload.job.jobId, first.payload.job.jobId);
|
|
assert.equal(diagnosticsSnapshot(window).jobs.active.length, 1);
|
|
});
|
|
|
|
test('unsupported provider actions return unsupported-operation instead of invoking callbacks', async () => {
|
|
const window = loadJobs();
|
|
const { calls, provider } = makeProvider({ providerId: 'provider.limited', actions: ['enqueue', 'inspect'] });
|
|
await dispatch(window, 'register-provider', { provider });
|
|
const enqueued = await dispatch(window, 'enqueue', enqueuePayload({ providerId: 'provider.limited' }));
|
|
calls.length = 0;
|
|
|
|
const pause = await dispatch(window, 'pause', { jobId: enqueued.payload.job.jobId });
|
|
const retry = await dispatch(window, 'retry', { jobId: enqueued.payload.job.jobId, authorization: 'user-action' });
|
|
|
|
assert.equal(pause.status, 'unsupported-operation');
|
|
assert.equal(retry.status, 'stale');
|
|
assert.equal(calls.length, 0);
|
|
}); |