62 lines
2.0 KiB
JavaScript
62 lines
2.0 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
|
|
require('../src/common');
|
|
|
|
const { registerInitialMediaSyncTask } = require('../src/web/lib/background-tasks/tasks-startup/media-sync');
|
|
|
|
test('initial media sync queues a separate task for each live player', async () => {
|
|
const queuedTasks = [];
|
|
const liveLastSeenAt = new Date(Date.now() - 10_000).toISOString();
|
|
const staleLastSeenAt = new Date(Date.now() - 5 * 60 * 1000).toISOString();
|
|
|
|
await registerInitialMediaSyncTask({
|
|
pool: {
|
|
async query() {
|
|
return [[
|
|
{
|
|
identifier: 'player-one',
|
|
public_base_url: 'https://player-one.example',
|
|
internal_base_url: 'http://player-one:8081',
|
|
last_seen_at: liveLastSeenAt
|
|
},
|
|
{
|
|
identifier: 'player-two',
|
|
public_base_url: 'https://player-two.example',
|
|
internal_base_url: 'http://player-two:8081',
|
|
last_seen_at: liveLastSeenAt
|
|
},
|
|
{
|
|
identifier: 'player-stale',
|
|
public_base_url: 'https://player-stale.example',
|
|
internal_base_url: 'http://player-stale:8081',
|
|
last_seen_at: staleLastSeenAt
|
|
}
|
|
]];
|
|
}
|
|
},
|
|
backgroundTaskQueue: {
|
|
async enqueueTask(definition) {
|
|
queuedTasks.push(definition);
|
|
return definition;
|
|
}
|
|
},
|
|
mediaDir: 'e:/Projects Git/pulse-signage/media',
|
|
uploadSyncService: {
|
|
async getPlayerTaskMetadata() {
|
|
return {};
|
|
}
|
|
}
|
|
});
|
|
|
|
assert.equal(queuedTasks.length, 2);
|
|
assert.deepEqual(queuedTasks.map(function (task) {
|
|
return task.metadata.playerIdentifier;
|
|
}).sort(), ['player-one', 'player-two']);
|
|
assert.deepEqual(queuedTasks.map(function (task) {
|
|
return task.payload.playerIdentifier;
|
|
}).sort(), ['player-one', 'player-two']);
|
|
assert.ok(queuedTasks.every(function (task) {
|
|
return task.key === 'initial-media-sync' && task.title === 'Initial media sync' && task.taskType === 'media-sync';
|
|
}));
|
|
}); |