actionhero
Version:
The reusable, scalable, and quick node.js API server for stateless and stateful applications
111 lines (98 loc) • 2.67 kB
text/typescript
jest.mock("./../../src/config/tasks.ts", () => ({
__esModule: true,
test: {
tasks: () => {
return {
_toExpand: false,
scheduler: true,
queues: ["*"],
workerLogging: {
failure: "error", // task failure
success: "info", // task success
start: "info",
end: "info",
cleaning_worker: "info",
poll: "debug",
job: "debug",
pause: "debug",
internalError: "error",
multiWorkerAction: "debug",
},
schedulerLogging: {
start: "info",
end: "info",
poll: "debug",
enqueue: "debug",
reEnqueue: "debug",
working_timestamp: "debug",
transferred_job: "debug",
},
timeout: 500,
minTaskProcessors: 1,
maxTaskProcessors: 1,
checkTimeout: 500,
maxEventLoopDelay: 5,
stuckWorkerTimeout: 1000 * 60 * 60,
resque_overrides: {},
connectionOptions: {
tasks: {},
},
};
},
},
}));
import * as path from "path";
import * as fs from "fs";
import { api, Process, utils } from "../../src";
const testTaskPath = path.join(__dirname, "./../../src/tasks/test-task.ts");
fs.writeFileSync(
testTaskPath,
`
import {Task} from './../index'
export default class MyTask extends Task {
constructor() {
super();
this.name = "test-task";
this.description = "a test";
this.frequency = 1;
this.queue = "default";
this.middleware = [];
}
async run() {
process.env.DID_TASK_RUN = "yes";
}
}
`,
);
describe("task integration tests", () => {
beforeAll(() => {
process.env.DID_TASK_RUN = "no";
});
test("the variable started as no", () => {
expect(process.env.DID_TASK_RUN).toBe("no");
});
describe("with a running server", () => {
let actionhero: Process;
beforeAll(async () => {
actionhero = new Process();
await actionhero.start();
await api.redis.clients.client.set("resque:stat:processed", 0);
});
afterAll(async () => {
await actionhero.stop();
fs.unlinkSync(testTaskPath);
});
test("the periodic task should have started", async () => {
const getCount = async () => {
const resp = await api.redis.clients.client.get(
"resque:stat:processed",
);
if (!resp) throw new Error("no response from redis");
return parseInt(resp);
};
while ((await getCount()) < 1) await utils.sleep(100);
expect(await getCount()).toBeGreaterThan(0);
expect(process.env.DID_TASK_RUN).toBe("yes");
});
});
});