53 lines
1.9 KiB
TypeScript
53 lines
1.9 KiB
TypeScript
import { it, describe } from 'mocha';
|
|
import { expect } from 'chai';
|
|
|
|
import { TaskQueue } from '../../src/Queue/TaskQueue';
|
|
import { NullLogger } from '../../src/Logger';
|
|
import { ArrayTaskProvider } from '../../src/Queue/TaskProvider/ArrayTaskProvider';
|
|
import { Task } from '../../src/Queue/Task';
|
|
|
|
describe('Task Queue', function () {
|
|
it('Can get task from queue', function () {
|
|
const provider = new ArrayTaskProvider([new Task('1', 0, 'task', {})]);
|
|
const queue = new TaskQueue(provider, new NullLogger());
|
|
const task = queue.get(1);
|
|
expect(task).to.be.instanceOf(Task);
|
|
});
|
|
|
|
it("Don't get unready task from queue", function () {
|
|
const provider = new ArrayTaskProvider([new Task('1', 5, 'task', {})]);
|
|
const queue = new TaskQueue(provider, new NullLogger());
|
|
const task = queue.get(1);
|
|
expect(task).to.be.undefined;
|
|
});
|
|
|
|
it('Can remove task by id', function () {
|
|
const provider = new ArrayTaskProvider([
|
|
new Task('id1', 1, 'task1', {}),
|
|
new Task('id2', 2, 'task2', {}),
|
|
]);
|
|
const queue = new TaskQueue(provider, new NullLogger());
|
|
queue.remove((t) => t.id === 'id1');
|
|
const tasks = provider.getTasks();
|
|
expect(tasks).to.have.lengthOf(1);
|
|
expect(tasks[0].ts).to.be.equals(2);
|
|
});
|
|
|
|
it('Can modify tasks', function () {
|
|
const provider = new ArrayTaskProvider([
|
|
new Task('1', 1, 'task1', {}),
|
|
new Task('2', 3, 'task2', {}),
|
|
new Task('3', 4, 'task3', {}),
|
|
]);
|
|
const queue = new TaskQueue(provider, new NullLogger());
|
|
queue.modify(
|
|
(t) => t.ts < 4,
|
|
(t) => new Task(t.id, 10, t.name, t.args)
|
|
);
|
|
const tasks = provider.getTasks();
|
|
expect(4).is.equals(tasks[0].ts);
|
|
expect(10).is.equals(tasks[1].ts);
|
|
expect(10).is.equals(tasks[2].ts);
|
|
});
|
|
});
|