Moving around some files so that it is a bit more clear and using ts-jest for jest
This commit is contained in:
parent
4f3c0e9938
commit
90a1f00f3d
8 changed files with 151 additions and 25 deletions
|
|
@ -1,9 +1,6 @@
|
||||||
/*
|
export default {
|
||||||
* For a detailed explanation regarding each configuration property, visit:
|
preset: 'ts-jest',
|
||||||
* https://jestjs.io/docs/configuration
|
testEnvironment: 'node',
|
||||||
*/
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
clearMocks: true,
|
clearMocks: true,
|
||||||
collectCoverage: true,
|
collectCoverage: true,
|
||||||
coverageReporters: [
|
coverageReporters: [
|
||||||
|
|
|
||||||
145
package-lock.json
generated
145
package-lock.json
generated
|
|
@ -20,7 +20,7 @@
|
||||||
"@rollup/plugin-commonjs": "^23.0.2",
|
"@rollup/plugin-commonjs": "^23.0.2",
|
||||||
"@rollup/plugin-node-resolve": "^15.0.1",
|
"@rollup/plugin-node-resolve": "^15.0.1",
|
||||||
"@rollup/plugin-typescript": "^9.0.2",
|
"@rollup/plugin-typescript": "^9.0.2",
|
||||||
"@types/jest": "^29.0.2",
|
"@types/jest": "^29.2.3",
|
||||||
"@types/mysql": "^2.15.21",
|
"@types/mysql": "^2.15.21",
|
||||||
"@types/puppeteer": "^5.4.7",
|
"@types/puppeteer": "^5.4.7",
|
||||||
"@types/uuid": "^8.3.4",
|
"@types/uuid": "^8.3.4",
|
||||||
|
|
@ -32,6 +32,7 @@
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^2.7.1",
|
||||||
"rollup": "^3.2.5",
|
"rollup": "^3.2.5",
|
||||||
"rollup-plugin-natives": "^0.7.6",
|
"rollup-plugin-natives": "^0.7.6",
|
||||||
|
"ts-jest": "^29.0.3",
|
||||||
"typescript": "^4.8.4"
|
"typescript": "^4.8.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|
@ -3248,9 +3249,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/jest": {
|
"node_modules/@types/jest": {
|
||||||
"version": "29.2.0",
|
"version": "29.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.3.tgz",
|
||||||
"integrity": "sha512-KO7bPV21d65PKwv3LLsD8Jn3E05pjNjRZvkm+YTacWhVmykAb07wW6IkZUmQAltwQafNcDUEUrMO2h3jeBSisg==",
|
"integrity": "sha512-6XwoEbmatfyoCjWRX7z0fKMmgYKe9+/HrviJ5k0X/tjJWHGAezZOfYaxqQKuzG/TvQyr+ktjm4jgbk0s4/oF2w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"expect": "^29.0.0",
|
"expect": "^29.0.0",
|
||||||
|
|
@ -3995,6 +3996,18 @@
|
||||||
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
|
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/bs-logger": {
|
||||||
|
"version": "0.2.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
|
||||||
|
"integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"fast-json-stable-stringify": "2.x"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/bser": {
|
"node_modules/bser": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
|
||||||
|
|
@ -9110,6 +9123,12 @@
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/lodash.memoize": {
|
||||||
|
"version": "4.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
||||||
|
"integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/lodash.merge": {
|
"node_modules/lodash.merge": {
|
||||||
"version": "4.6.2",
|
"version": "4.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
||||||
|
|
@ -9150,6 +9169,12 @@
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/make-error": {
|
||||||
|
"version": "1.3.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
|
||||||
|
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/makeerror": {
|
"node_modules/makeerror": {
|
||||||
"version": "1.0.12",
|
"version": "1.0.12",
|
||||||
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
|
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
|
||||||
|
|
@ -10282,6 +10307,64 @@
|
||||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
||||||
},
|
},
|
||||||
|
"node_modules/ts-jest": {
|
||||||
|
"version": "29.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.3.tgz",
|
||||||
|
"integrity": "sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"bs-logger": "0.x",
|
||||||
|
"fast-json-stable-stringify": "2.x",
|
||||||
|
"jest-util": "^29.0.0",
|
||||||
|
"json5": "^2.2.1",
|
||||||
|
"lodash.memoize": "4.x",
|
||||||
|
"make-error": "1.x",
|
||||||
|
"semver": "7.x",
|
||||||
|
"yargs-parser": "^21.0.1"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"ts-jest": "cli.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@babel/core": ">=7.0.0-beta.0 <8",
|
||||||
|
"@jest/types": "^29.0.0",
|
||||||
|
"babel-jest": "^29.0.0",
|
||||||
|
"jest": "^29.0.0",
|
||||||
|
"typescript": ">=4.3"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@babel/core": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"@jest/types": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"babel-jest": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"esbuild": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ts-jest/node_modules/semver": {
|
||||||
|
"version": "7.3.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
|
||||||
|
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"lru-cache": "^6.0.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"semver": "bin/semver.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/tslib": {
|
"node_modules/tslib": {
|
||||||
"version": "1.14.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
|
||||||
|
|
@ -13123,9 +13206,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/jest": {
|
"@types/jest": {
|
||||||
"version": "29.2.0",
|
"version": "29.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.3.tgz",
|
||||||
"integrity": "sha512-KO7bPV21d65PKwv3LLsD8Jn3E05pjNjRZvkm+YTacWhVmykAb07wW6IkZUmQAltwQafNcDUEUrMO2h3jeBSisg==",
|
"integrity": "sha512-6XwoEbmatfyoCjWRX7z0fKMmgYKe9+/HrviJ5k0X/tjJWHGAezZOfYaxqQKuzG/TvQyr+ktjm4jgbk0s4/oF2w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"expect": "^29.0.0",
|
"expect": "^29.0.0",
|
||||||
|
|
@ -13648,6 +13731,15 @@
|
||||||
"update-browserslist-db": "^1.0.9"
|
"update-browserslist-db": "^1.0.9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"bs-logger": {
|
||||||
|
"version": "0.2.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
|
||||||
|
"integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"fast-json-stable-stringify": "2.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
"bser": {
|
"bser": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
|
||||||
|
|
@ -17562,6 +17654,12 @@
|
||||||
"p-locate": "^4.1.0"
|
"p-locate": "^4.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"lodash.memoize": {
|
||||||
|
"version": "4.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
||||||
|
"integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"lodash.merge": {
|
"lodash.merge": {
|
||||||
"version": "4.6.2",
|
"version": "4.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
||||||
|
|
@ -17593,6 +17691,12 @@
|
||||||
"semver": "^6.0.0"
|
"semver": "^6.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"make-error": {
|
||||||
|
"version": "1.3.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
|
||||||
|
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"makeerror": {
|
"makeerror": {
|
||||||
"version": "1.0.12",
|
"version": "1.0.12",
|
||||||
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
|
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
|
||||||
|
|
@ -18427,6 +18531,33 @@
|
||||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
||||||
},
|
},
|
||||||
|
"ts-jest": {
|
||||||
|
"version": "29.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.3.tgz",
|
||||||
|
"integrity": "sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"bs-logger": "0.x",
|
||||||
|
"fast-json-stable-stringify": "2.x",
|
||||||
|
"jest-util": "^29.0.0",
|
||||||
|
"json5": "^2.2.1",
|
||||||
|
"lodash.memoize": "4.x",
|
||||||
|
"make-error": "1.x",
|
||||||
|
"semver": "7.x",
|
||||||
|
"yargs-parser": "^21.0.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"semver": {
|
||||||
|
"version": "7.3.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
|
||||||
|
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"lru-cache": "^6.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"tslib": {
|
"tslib": {
|
||||||
"version": "1.14.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
"@rollup/plugin-commonjs": "^23.0.2",
|
"@rollup/plugin-commonjs": "^23.0.2",
|
||||||
"@rollup/plugin-node-resolve": "^15.0.1",
|
"@rollup/plugin-node-resolve": "^15.0.1",
|
||||||
"@rollup/plugin-typescript": "^9.0.2",
|
"@rollup/plugin-typescript": "^9.0.2",
|
||||||
"@types/jest": "^29.0.2",
|
"@types/jest": "^29.2.3",
|
||||||
"@types/mysql": "^2.15.21",
|
"@types/mysql": "^2.15.21",
|
||||||
"@types/puppeteer": "^5.4.7",
|
"@types/puppeteer": "^5.4.7",
|
||||||
"@types/uuid": "^8.3.4",
|
"@types/uuid": "^8.3.4",
|
||||||
|
|
@ -45,6 +45,7 @@
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^2.7.1",
|
||||||
"rollup": "^3.2.5",
|
"rollup": "^3.2.5",
|
||||||
"rollup-plugin-natives": "^0.7.6",
|
"rollup-plugin-natives": "^0.7.6",
|
||||||
|
"ts-jest": "^29.0.3",
|
||||||
"typescript": "^4.8.4"
|
"typescript": "^4.8.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
import { Dayjs } from 'dayjs'
|
import { Dayjs } from 'dayjs'
|
||||||
import { v4 } from 'uuid'
|
import { v4 } from 'uuid'
|
||||||
|
|
||||||
import { Logger, LogLevel } from '../../common/logger'
|
import { Logger, LogLevel } from './logger'
|
||||||
import { Reservation } from '../../common/reservation'
|
import { Reservation } from './reservation'
|
||||||
import { validateJSONRequest } from '../../common/request'
|
import { validateJSONRequest } from './request'
|
||||||
import { Worker } from '../types'
|
|
||||||
|
|
||||||
export interface ScheduledReservation {
|
export interface ScheduledReservation {
|
||||||
reservation: Reservation
|
reservation: Reservation
|
||||||
|
|
@ -17,7 +16,7 @@ export interface SchedulerResult {
|
||||||
|
|
||||||
export type SchedulerInput = Record<string, unknown>
|
export type SchedulerInput = Record<string, unknown>
|
||||||
|
|
||||||
export const work: Worker<SchedulerInput, SchedulerResult> = async (
|
export const work = async (
|
||||||
payload: SchedulerInput
|
payload: SchedulerInput
|
||||||
): Promise<SchedulerResult> => {
|
): Promise<SchedulerResult> => {
|
||||||
Logger.instantiate('scheduler', v4(), LogLevel.DEBUG)
|
Logger.instantiate('scheduler', v4(), LogLevel.DEBUG)
|
||||||
|
|
@ -3,7 +3,7 @@ import { Readable } from 'stream'
|
||||||
import { v4 } from 'uuid'
|
import { v4 } from 'uuid'
|
||||||
import { disconnect } from '../common/database'
|
import { disconnect } from '../common/database'
|
||||||
import { Logger, LogLevel } from '../common/logger'
|
import { Logger, LogLevel } from '../common/logger'
|
||||||
import { work as schedule } from '../workers/scheduler'
|
import { work as schedule } from '../common/scheduler'
|
||||||
|
|
||||||
Logger.instantiate('requester', 'start-up', LogLevel.INFO)
|
Logger.instantiate('requester', 'start-up', LogLevel.INFO)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
export type Worker<I = unknown, O = unknown> = (payload: I) => O | Promise<O>
|
|
||||||
|
|
@ -5,7 +5,7 @@ import {
|
||||||
work,
|
work,
|
||||||
SchedulerInput,
|
SchedulerInput,
|
||||||
SchedulerResult,
|
SchedulerResult,
|
||||||
} from '../../src/workers/scheduler'
|
} from '../../src/common/scheduler'
|
||||||
|
|
||||||
jest.mock('../../src/common/logger')
|
jest.mock('../../src/common/logger')
|
||||||
jest.useFakeTimers().setSystemTime(new Date('2022-01-01'))
|
jest.useFakeTimers().setSystemTime(new Date('2022-01-01'))
|
||||||
|
|
@ -22,9 +22,8 @@ describe('scheduler', () => {
|
||||||
opponent: { id: '123', name: 'collin' },
|
opponent: { id: '123', name: 'collin' },
|
||||||
}
|
}
|
||||||
|
|
||||||
await expect(work(payload)).resolves.toMatchSnapshot<SchedulerResult>({
|
expect(await work(payload)).toMatchSnapshot({
|
||||||
scheduledReservation: {
|
scheduledReservation: {
|
||||||
// @ts-expect-error snapshot property matching
|
|
||||||
reservation: {
|
reservation: {
|
||||||
user: {
|
user: {
|
||||||
username: 'collin',
|
username: 'collin',
|
||||||
|
|
@ -47,7 +46,7 @@ describe('scheduler', () => {
|
||||||
opponent: { id: '123', name: 'collin' },
|
opponent: { id: '123', name: 'collin' },
|
||||||
}
|
}
|
||||||
|
|
||||||
await expect(work(payload)).resolves.toMatchSnapshot<SchedulerResult>({
|
await expect(await work(payload)).toMatchSnapshot({
|
||||||
scheduledReservation: {
|
scheduledReservation: {
|
||||||
reservation: new Reservation(
|
reservation: new Reservation(
|
||||||
{ username: 'collin', password: expect.any(String) },
|
{ username: 'collin', password: expect.any(String) },
|
||||||
Loading…
Add table
Reference in a new issue