mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-03-03 10:13:17 +08:00
Testing - mock setup for redis (#2944)
This commit is contained in:
parent
91220a5bdc
commit
afd288a717
5 changed files with 149 additions and 7 deletions
|
@ -35,7 +35,6 @@
|
|||
],
|
||||
"semi": ["error", "always"],
|
||||
"no-empty": ["error", { "allowEmptyCatch": true }],
|
||||
"no-unused-vars": ["error", { "argsIgnorePattern": "^(_|e|event)" }],
|
||||
"no-var": 2,
|
||||
"require-path-exists/notEmpty": 2,
|
||||
"require-path-exists/tooManyArguments": 2,
|
||||
|
@ -68,9 +67,10 @@
|
|||
"@typescript-eslint/explicit-function-return-type": ["error"],
|
||||
"@typescript-eslint/ban-ts-comment": "off",
|
||||
"@typescript-eslint/no-empty-function": "error",
|
||||
"no-unused-vars": "off",
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"error",
|
||||
{ "argsIgnorePattern": "^(_|e|event)" }
|
||||
{ "argsIgnorePattern": "^(_|e|event)", "varsIgnorePattern": "^_" }
|
||||
],
|
||||
"@typescript-eslint/no-var-requires": "error",
|
||||
"@typescript-eslint/no-this-alias": "off"
|
||||
|
|
139
backend/package-lock.json
generated
139
backend/package-lock.json
generated
|
@ -52,6 +52,7 @@
|
|||
"@types/swagger-ui-express": "4.1.3",
|
||||
"@types/ua-parser-js": "0.7.36",
|
||||
"@types/uuid": "8.3.4",
|
||||
"ioredis-mock": "7.4.0",
|
||||
"jest": "27.5.1",
|
||||
"jest-environment-node": "27.5.1",
|
||||
"supertest": "6.2.3",
|
||||
|
@ -1652,8 +1653,9 @@
|
|||
},
|
||||
"node_modules/@types/jest": {
|
||||
"version": "27.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.0.tgz",
|
||||
"integrity": "sha512-9RBFx7r4k+msyj/arpfaa0WOOEcaAZNmN+j80KFbFCoSqCJGHTz7YMAMGQW9Xmqm5w6l5c25vbSjMwlikJi5+g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"jest-matcher-utils": "^27.0.0",
|
||||
"pretty-format": "^27.0.0"
|
||||
|
@ -3647,6 +3649,44 @@
|
|||
"version": "4.2.1",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fengari": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/fengari/-/fengari-0.1.4.tgz",
|
||||
"integrity": "sha512-6ujqUuiIYmcgkGz8MGAdERU57EIluGGPSUgGPTsco657EHa+srq0S3/YUl/r9kx1+D+d4rGfYObd+m8K22gB1g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"readline-sync": "^1.4.9",
|
||||
"sprintf-js": "^1.1.1",
|
||||
"tmp": "^0.0.33"
|
||||
}
|
||||
},
|
||||
"node_modules/fengari-interop": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fengari-interop/-/fengari-interop-0.1.3.tgz",
|
||||
"integrity": "sha512-EtZ+oTu3kEwVJnoymFPBVLIbQcCoy9uWCVnMA6h3M/RqHkUBsLYp29+RRHf9rKr6GwjubWREU1O7RretFIXjHw==",
|
||||
"dev": true,
|
||||
"peerDependencies": {
|
||||
"fengari": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/fengari/node_modules/sprintf-js": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
|
||||
"integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/fengari/node_modules/tmp": {
|
||||
"version": "0.0.33",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
||||
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"os-tmpdir": "~1.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/fill-range": {
|
||||
"version": "7.0.1",
|
||||
"license": "MIT",
|
||||
|
@ -4408,6 +4448,24 @@
|
|||
"url": "https://opencollective.com/ioredis"
|
||||
}
|
||||
},
|
||||
"node_modules/ioredis-mock": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/ioredis-mock/-/ioredis-mock-7.4.0.tgz",
|
||||
"integrity": "sha512-jcNG+9YjjBA1p6Hb1nYaC1yhW+n9S5VOgbGZXt59ZmtI2WrPWH+lSD4gE017uaGitPqW7tquFdAfcBPvFEQbew==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fengari": "^0.1.4",
|
||||
"fengari-interop": "^0.1.3",
|
||||
"redis-commands": "^1.7.0",
|
||||
"standard-as-callback": "^2.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ioredis": "4.x || 5.x"
|
||||
}
|
||||
},
|
||||
"node_modules/ioredis/node_modules/debug": {
|
||||
"version": "4.3.4",
|
||||
"license": "MIT",
|
||||
|
@ -6621,6 +6679,15 @@
|
|||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/os-tmpdir": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
|
||||
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/p-cancelable": {
|
||||
"version": "1.1.0",
|
||||
"license": "MIT",
|
||||
|
@ -7095,6 +7162,15 @@
|
|||
"node": ">=8.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/readline-sync": {
|
||||
"version": "1.4.10",
|
||||
"resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz",
|
||||
"integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/redis-commands": {
|
||||
"version": "1.7.0",
|
||||
"license": "MIT"
|
||||
|
@ -10028,6 +10104,8 @@
|
|||
},
|
||||
"@types/jest": {
|
||||
"version": "27.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.0.tgz",
|
||||
"integrity": "sha512-9RBFx7r4k+msyj/arpfaa0WOOEcaAZNmN+j80KFbFCoSqCJGHTz7YMAMGQW9Xmqm5w6l5c25vbSjMwlikJi5+g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"jest-matcher-utils": "^27.0.0",
|
||||
|
@ -11361,6 +11439,41 @@
|
|||
"fecha": {
|
||||
"version": "4.2.1"
|
||||
},
|
||||
"fengari": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/fengari/-/fengari-0.1.4.tgz",
|
||||
"integrity": "sha512-6ujqUuiIYmcgkGz8MGAdERU57EIluGGPSUgGPTsco657EHa+srq0S3/YUl/r9kx1+D+d4rGfYObd+m8K22gB1g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"readline-sync": "^1.4.9",
|
||||
"sprintf-js": "^1.1.1",
|
||||
"tmp": "^0.0.33"
|
||||
},
|
||||
"dependencies": {
|
||||
"sprintf-js": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
|
||||
"integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
|
||||
"dev": true
|
||||
},
|
||||
"tmp": {
|
||||
"version": "0.0.33",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
||||
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"os-tmpdir": "~1.0.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"fengari-interop": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fengari-interop/-/fengari-interop-0.1.3.tgz",
|
||||
"integrity": "sha512-EtZ+oTu3kEwVJnoymFPBVLIbQcCoy9uWCVnMA6h3M/RqHkUBsLYp29+RRHf9rKr6GwjubWREU1O7RretFIXjHw==",
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
"fill-range": {
|
||||
"version": "7.0.1",
|
||||
"requires": {
|
||||
|
@ -11841,6 +11954,18 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"ioredis-mock": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/ioredis-mock/-/ioredis-mock-7.4.0.tgz",
|
||||
"integrity": "sha512-jcNG+9YjjBA1p6Hb1nYaC1yhW+n9S5VOgbGZXt59ZmtI2WrPWH+lSD4gE017uaGitPqW7tquFdAfcBPvFEQbew==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fengari": "^0.1.4",
|
||||
"fengari-interop": "^0.1.3",
|
||||
"redis-commands": "^1.7.0",
|
||||
"standard-as-callback": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"ip": {
|
||||
"version": "1.1.5"
|
||||
},
|
||||
|
@ -13293,6 +13418,12 @@
|
|||
"word-wrap": "~1.2.3"
|
||||
}
|
||||
},
|
||||
"os-tmpdir": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
|
||||
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
|
||||
"dev": true
|
||||
},
|
||||
"p-cancelable": {
|
||||
"version": "1.1.0"
|
||||
},
|
||||
|
@ -13588,6 +13719,12 @@
|
|||
"picomatch": "^2.2.1"
|
||||
}
|
||||
},
|
||||
"readline-sync": {
|
||||
"version": "1.4.10",
|
||||
"resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz",
|
||||
"integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==",
|
||||
"dev": true
|
||||
},
|
||||
"redis-commands": {
|
||||
"version": "1.7.0"
|
||||
},
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
"@types/swagger-ui-express": "4.1.3",
|
||||
"@types/ua-parser-js": "0.7.36",
|
||||
"@types/uuid": "8.3.4",
|
||||
"ioredis-mock": "7.4.0",
|
||||
"jest": "27.5.1",
|
||||
"jest-environment-node": "27.5.1",
|
||||
"supertest": "6.2.3",
|
||||
|
|
|
@ -28,6 +28,12 @@ jest.mock("swagger-stats", () => ({
|
|||
},
|
||||
}));
|
||||
|
||||
if (!process.env.REDIS_URI) {
|
||||
// use mock if not set
|
||||
process.env.REDIS_URI = "redis://mock";
|
||||
jest.mock("ioredis", () => require("ioredis-mock"));
|
||||
}
|
||||
|
||||
// TODO: better approach for this when needed
|
||||
// https://firebase.google.com/docs/rules/unit-tests#run_local_unit_tests_with_the_version_9_javascript_sdk
|
||||
jest.mock("firebase-admin", () => ({
|
||||
|
|
|
@ -16,7 +16,7 @@ function buildGeorgeTask(command: string, taskArguments: any[]): GeorgeTask {
|
|||
}
|
||||
|
||||
let jobQueue: Queue;
|
||||
let jobQueueScheduler: QueueScheduler;
|
||||
let _queueScheduler: QueueScheduler;
|
||||
|
||||
export function initJobQueue(redisConnection: IORedis.Redis | undefined): void {
|
||||
if (jobQueue || !redisConnection) {
|
||||
|
@ -36,11 +36,9 @@ export function initJobQueue(redisConnection: IORedis.Redis | undefined): void {
|
|||
},
|
||||
});
|
||||
|
||||
jobQueueScheduler = new QueueScheduler(QUEUE_NAME, {
|
||||
autorun: false,
|
||||
_queueScheduler = new QueueScheduler(QUEUE_NAME, {
|
||||
connection: redisConnection,
|
||||
});
|
||||
jobQueueScheduler.run();
|
||||
}
|
||||
|
||||
async function addToQueue(command: string, task: GeorgeTask): Promise<void> {
|
||||
|
|
Loading…
Reference in a new issue