Skip to content
This repository was archived by the owner on Apr 19, 2020. It is now read-only.

Commit 125cd55

Browse files
committed
Add ts-jest
1 parent 9168f60 commit 125cd55

File tree

4 files changed

+86
-22
lines changed

4 files changed

+86
-22
lines changed

jest.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
module.exports = {
2+
preset: 'ts-jest',
23
testEnvironment: './jest.env.js',
34
testPathIgnorePatterns: ['/node_modules/', '__utils__\\.test\\.[jt]s$']
45
};

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@
5858
"pretty-quick": "^2.0.1",
5959
"rimraf": "^3.0.2",
6060
"rollup-plugin-typescript2": "^0.26.0",
61+
"ts-jest": "^25.2.1",
62+
"ts-node": "^8.6.2",
6163
"typescript": "^3.8.3"
6264
},
6365
"peerDependencies": {

src/index.test.js renamed to src/index.test.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1-
const MongoDBEngine = require('../').default;
2-
const { MongoDBDatabaseEngine } = require('../');
1+
import MongoDBEngine, { MongoDBDatabaseEngine } from './index';
2+
3+
type GetAdvisoryLockId = import('@synor/core').GetAdvisoryLockId;
4+
type GetUserInfo = import('@synor/core').GetUserInfo;
35

46
jest.setTimeout(10 * 1000);
57

68
jest.mock('perf_hooks');
79

810
const baseVersion = '0';
9-
const getAdvisoryLockId = (databaseName, ...names) => {
11+
const getAdvisoryLockId: GetAdvisoryLockId = (databaseName, ...names) => {
1012
return [String(databaseName.length), String(names.join().length)];
1113
};
12-
const getUserInfo = () => Promise.resolve(`Jest`);
14+
const getUserInfo: GetUserInfo = () => Promise.resolve(`Jest`);
1315

1416
const databaseName = 'synor';
1517
const collectionName = 'test_record';
@@ -31,8 +33,8 @@ describe('module exports', () => {
3133
});
3234

3335
describe('initialization', () => {
34-
let dbUri;
35-
const helpers = {
36+
let dbUri: Parameters<typeof MongoDBDatabaseEngine>[0];
37+
const helpers: Parameters<typeof MongoDBDatabaseEngine>[1] = {
3638
baseVersion,
3739
getAdvisoryLockId,
3840
getUserInfo
@@ -46,7 +48,7 @@ describe('initialization', () => {
4648
});
4749

4850
test.each([undefined, null, 0])('throws if uri is %s', uri => {
49-
expect(() => MongoDBDatabaseEngine(uri, helpers)).toThrow();
51+
expect(() => MongoDBDatabaseEngine(uri as any, helpers)).toThrow();
5052
});
5153

5254
test('throws if uri is empty', () => {
@@ -66,9 +68,9 @@ describe('initialization', () => {
6668
});
6769

6870
test(`throws if getAdvisoryLockId is not function`, () => {
69-
helpers.getAdvisoryLockId = '';
71+
helpers.getAdvisoryLockId = '' as any;
7072
expect(() => MongoDBDatabaseEngine(dbUri, helpers)).toThrow();
71-
helpers.getAdvisoryLockId = null;
73+
helpers.getAdvisoryLockId = null as any;
7274
expect(() => MongoDBDatabaseEngine(dbUri, helpers)).toThrow();
7375
});
7476

@@ -78,9 +80,9 @@ describe('initialization', () => {
7880
});
7981

8082
test(`throws if getUserInfo is not function`, () => {
81-
helpers.getUserInfo = '';
83+
helpers.getUserInfo = '' as any;
8284
expect(() => MongoDBDatabaseEngine(dbUri, helpers)).toThrow();
83-
helpers.getUserInfo = null;
85+
helpers.getUserInfo = null as any;
8486
expect(() => MongoDBDatabaseEngine(dbUri, helpers)).toThrow();
8587
});
8688
});

yarn.lock

Lines changed: 70 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,6 +1396,11 @@ anymatch@^3.0.3:
13961396
normalize-path "^3.0.0"
13971397
picomatch "^2.0.4"
13981398

1399+
arg@^4.1.0:
1400+
version "4.1.3"
1401+
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
1402+
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
1403+
13991404
argparse@^1.0.7:
14001405
version "1.0.10"
14011406
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -1674,6 +1679,13 @@ browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.8.2:
16741679
electron-to-chromium "^1.3.322"
16751680
node-releases "^1.1.42"
16761681

1682+
bs-logger@0.x:
1683+
version "0.2.6"
1684+
resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8"
1685+
integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==
1686+
dependencies:
1687+
fast-json-stable-stringify "2.x"
1688+
16771689
bser@2.1.1:
16781690
version "2.1.1"
16791691
resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
@@ -1700,7 +1712,7 @@ buble@^0.19.8:
17001712
os-homedir "^2.0.0"
17011713
regexpu-core "^4.5.4"
17021714

1703-
buffer-from@^1.0.0:
1715+
buffer-from@1.x, buffer-from@^1.0.0:
17041716
version "1.1.1"
17051717
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
17061718
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
@@ -2347,6 +2359,11 @@ diff-sequences@^25.1.0:
23472359
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.1.0.tgz#fd29a46f1c913fd66c22645dc75bffbe43051f32"
23482360
integrity sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw==
23492361

2362+
diff@^4.0.1:
2363+
version "4.0.2"
2364+
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
2365+
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
2366+
23502367
doctrine@1.5.0:
23512368
version "1.5.0"
23522369
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
@@ -2849,6 +2866,11 @@ fast-diff@^1.1.2:
28492866
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
28502867
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
28512868

2869+
fast-json-stable-stringify@2.x:
2870+
version "2.1.0"
2871+
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
2872+
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
2873+
28522874
fast-json-stable-stringify@^2.0.0:
28532875
version "2.0.0"
28542876
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
@@ -4135,18 +4157,18 @@ json-stringify-safe@~5.0.1:
41354157
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
41364158
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
41374159

4138-
json5@^0.5.0:
4139-
version "0.5.1"
4140-
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
4141-
integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
4142-
4143-
json5@^2.1.0:
4160+
json5@2.x, json5@^2.1.0:
41444161
version "2.1.1"
41454162
resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6"
41464163
integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==
41474164
dependencies:
41484165
minimist "^1.2.0"
41494166

4167+
json5@^0.5.0:
4168+
version "0.5.1"
4169+
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
4170+
integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
4171+
41504172
jsonfile@^4.0.0:
41514173
version "4.0.0"
41524174
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
@@ -4319,7 +4341,7 @@ lodash.defaultsdeep@^4.6.1:
43194341
resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6"
43204342
integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==
43214343

4322-
lodash.memoize@^4.1.2:
4344+
lodash.memoize@4.x, lodash.memoize@^4.1.2:
43234345
version "4.1.2"
43244346
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
43254347
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
@@ -4411,6 +4433,11 @@ make-dir@^3.0.2:
44114433
dependencies:
44124434
semver "^6.0.0"
44134435

4436+
make-error@1.x, make-error@^1.1.1:
4437+
version "1.3.6"
4438+
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
4439+
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
4440+
44144441
makeerror@1.0.x:
44154442
version "1.0.11"
44164443
resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
@@ -4519,7 +4546,7 @@ mixin-deep@^1.2.0:
45194546
for-in "^1.0.2"
45204547
is-extendable "^1.0.1"
45214548

4522-
mkdirp@^0.5.1, mkdirp@~0.5.1:
4549+
mkdirp@0.x, mkdirp@^0.5.1, mkdirp@~0.5.1:
45234550
version "0.5.1"
45244551
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
45254552
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
@@ -5720,7 +5747,7 @@ resolve@1.1.7:
57205747
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
57215748
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
57225749

5723-
resolve@1.15.1:
5750+
resolve@1.15.1, resolve@1.x:
57245751
version "1.15.1"
57255752
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8"
57265753
integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==
@@ -5986,7 +6013,7 @@ semver-regex@^2.0.0:
59866013
resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338"
59876014
integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==
59886015

5989-
"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.4.1, semver@^5.5.0:
6016+
"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0:
59906017
version "5.7.1"
59916018
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
59926019
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -6594,6 +6621,33 @@ tr46@^1.0.1:
65946621
dependencies:
65956622
punycode "^2.1.0"
65966623

6624+
ts-jest@^25.2.1:
6625+
version "25.2.1"
6626+
resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-25.2.1.tgz#49bf05da26a8b7fbfbc36b4ae2fcdc2fef35c85d"
6627+
integrity sha512-TnntkEEjuXq/Gxpw7xToarmHbAafgCaAzOpnajnFC6jI7oo1trMzAHA04eWpc3MhV6+yvhE8uUBAmN+teRJh0A==
6628+
dependencies:
6629+
bs-logger "0.x"
6630+
buffer-from "1.x"
6631+
fast-json-stable-stringify "2.x"
6632+
json5 "2.x"
6633+
lodash.memoize "4.x"
6634+
make-error "1.x"
6635+
mkdirp "0.x"
6636+
resolve "1.x"
6637+
semver "^5.5"
6638+
yargs-parser "^16.1.0"
6639+
6640+
ts-node@^8.6.2:
6641+
version "8.6.2"
6642+
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.6.2.tgz#7419a01391a818fbafa6f826a33c1a13e9464e35"
6643+
integrity sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg==
6644+
dependencies:
6645+
arg "^4.1.0"
6646+
diff "^4.0.1"
6647+
make-error "^1.1.1"
6648+
source-map-support "^0.5.6"
6649+
yn "3.1.1"
6650+
65976651
tslib@1.10.0, tslib@^1.8.1, tslib@^1.9.0:
65986652
version "1.10.0"
65996653
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
@@ -6959,3 +7013,8 @@ yargs@^15.0.0:
69597013
which-module "^2.0.0"
69607014
y18n "^4.0.0"
69617015
yargs-parser "^16.1.0"
7016+
7017+
yn@3.1.1:
7018+
version "3.1.1"
7019+
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
7020+
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==

0 commit comments

Comments
 (0)