diff --git a/package.json b/package.json index a64042ff56..6fc7b655d4 100644 --- a/package.json +++ b/package.json @@ -116,6 +116,7 @@ "@types/bcrypt": "^5.0.0", "@types/express": "^4.17.11", "@types/express-session": "^1.17.4", + "@types/faker": "^5.5.8", "@types/jest": "^27.0.1", "@types/js-yaml": "^3.12.7", "@types/memoizee": "^0.4.6", diff --git a/src/lib/logger.test.js b/src/lib/logger.test.ts similarity index 74% rename from src/lib/logger.test.js rename to src/lib/logger.test.ts index 385cecba93..05f96cbd47 100644 --- a/src/lib/logger.test.js +++ b/src/lib/logger.test.ts @@ -1,6 +1,4 @@ -'use strict'; - -const logger = require('./logger'); +import * as logger from './logger'; test('should require custom logger to implement info', () => { const loggerImpl = { @@ -10,7 +8,8 @@ test('should require custom logger to implement info', () => { }; const provider = () => loggerImpl; expect(() => { - logger.validateLogProvider(provider)(); + // @ts-ignore:next-line + return logger.validateLogProvider(provider); }).toThrowError(new TypeError('Logger must implement info')); }); @@ -22,6 +21,7 @@ test('should require custom logger to implement error', () => { }; const provider = () => loggerImpl; expect(() => { - logger.validateLogProvider(provider)(); + // @ts-ignore:next-line + return logger.validateLogProvider(provider); }).toThrowError(new TypeError('Logger must implement error')); }); diff --git a/src/lib/server-impl.test.js b/src/lib/server-impl.test.ts similarity index 81% rename from src/lib/server-impl.test.js rename to src/lib/server-impl.test.ts index a6157fb85a..0e8e7c68c3 100644 --- a/src/lib/server-impl.test.js +++ b/src/lib/server-impl.test.ts @@ -1,8 +1,7 @@ -'use strict'; - -const { EventEmitter } = require('events'); -const express = require('express'); -const { createTestConfig } = require('../test/config/test-config'); +import { EventEmitter } from 'events'; +import express from 'express'; +import { createTestConfig } from '../test/config/test-config'; +import { start, create } from './server-impl'; jest.mock( './routes', @@ -14,8 +13,6 @@ jest.mock( }, ); -const getApp = require('./app'); - const noop = () => {}; const eventStore = new EventEmitter(); @@ -25,8 +22,6 @@ const settingStore = { }, }; -jest.mock('./app', () => getApp); - jest.mock('./metrics', () => ({ createMetricsMonitor() { return { @@ -60,8 +55,6 @@ jest.mock( }, ); -const serverImpl = require('./server-impl'); - test('should call preHook', async () => { let called = 0; const config = createTestConfig({ @@ -70,13 +63,14 @@ test('should call preHook', async () => { called++; }, }); - await serverImpl.start(config); + const { stop } = await start(config); expect(called).toBe(1); + await stop(); }); test('should call preRouterHook', async () => { let called = 0; - await serverImpl.start( + const { stop } = await start( createTestConfig({ server: { port: 0 }, preRouterHook: () => { @@ -85,6 +79,7 @@ test('should call preRouterHook', async () => { }), ); expect(called === 1).toBe(true); + await stop(); }); test('should call eventHook', async () => { @@ -95,26 +90,29 @@ test('should call eventHook', async () => { called++; }, }); - await serverImpl.start(config); + const { stop } = await start(config); eventStore.emit('feature-created', {}); expect(called === 1).toBe(true); + await stop(); }); test('should auto-create server on start()', async () => { - const { server } = await serverImpl.start( + const { server, stop } = await start( createTestConfig({ server: { port: 0 } }), ); expect(typeof server === 'undefined').toBe(false); + await stop(); }); test('should not create a server using create()', async () => { const config = createTestConfig({ server: { port: 0 } }); - const { server } = await serverImpl.create(config); + const { server, stop } = await create(config); expect(server).toBeUndefined(); + await stop(); }); test('should shutdown the server when calling stop()', async () => { - const { server, stop } = await serverImpl.start( + const { server, stop } = await start( createTestConfig({ server: { port: 0 } }), ); await stop(); diff --git a/src/test/e2e/api/client/metrics.e2e.test.js b/src/test/e2e/api/client/metrics.e2e.test.ts similarity index 79% rename from src/test/e2e/api/client/metrics.e2e.test.js rename to src/test/e2e/api/client/metrics.e2e.test.ts index 644d3faada..30ac24b378 100644 --- a/src/test/e2e/api/client/metrics.e2e.test.js +++ b/src/test/e2e/api/client/metrics.e2e.test.ts @@ -1,9 +1,7 @@ -'use strict'; - -const { setupApp } = require('../../helpers/test-helper'); -const metricsExample = require('../../../examples/client-metrics.json'); -const dbInit = require('../../helpers/database-init'); -const getLogger = require('../../../fixtures/no-logger'); +import { setupApp } from '../../helpers/test-helper'; +import metricsExample from '../../../examples/client-metrics.json'; +import dbInit from '../../helpers/database-init'; +import getLogger from '../../../fixtures/no-logger'; let app; let db; diff --git a/src/test/e2e/api/client/register.e2e.test.js b/src/test/e2e/api/client/register.e2e.test.ts similarity index 91% rename from src/test/e2e/api/client/register.e2e.test.js rename to src/test/e2e/api/client/register.e2e.test.ts index 28aba88c8f..59d4d8f2c2 100644 --- a/src/test/e2e/api/client/register.e2e.test.js +++ b/src/test/e2e/api/client/register.e2e.test.ts @@ -1,10 +1,8 @@ -'use strict'; - -const faker = require('faker'); -const { setupApp } = require('../../helpers/test-helper'); -const dbInit = require('../../helpers/database-init'); -const getLogger = require('../../../fixtures/no-logger'); -const version = require('../../../../lib/util/version'); +import faker from 'faker'; +import { setupApp } from '../../helpers/test-helper'; +import dbInit from '../../helpers/database-init'; +import getLogger from '../../../fixtures/no-logger'; +import version from '../../../../lib/util/version'; const asyncFilter = async (arr, predicate) => { const results = await Promise.all(arr.map(predicate)); diff --git a/yarn.lock b/yarn.lock index f454027580..0cb2ff28a5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -744,6 +744,11 @@ "@types/qs" "*" "@types/serve-static" "*" +"@types/faker@^5.5.8": + version "5.5.8" + resolved "https://registry.yarnpkg.com/@types/faker/-/faker-5.5.8.tgz#6649adfdfdbb0acf95361fc48f2d0ca6e88bd1cf" + integrity sha512-bsl0rYsaZVHlZkynL5O04q6YXDmVjcid6MbOHWqvtE2WWs/EKhp0qchDDhVWlWyQXUffX1G83X9LnMxRl8S/Mw== + "@types/graceful-fs@^4.1.2": version "4.1.5" resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz"