1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-11-01 19:07:38 +01:00
unleash.unleash/src/lib/app.test.ts

90 lines
2.2 KiB
TypeScript
Raw Normal View History

2021-09-14 19:30:11 +02:00
import express from 'express';
import { createTestConfig } from '../test/config/test-config';
import compression from 'compression';
jest.mock('compression', () =>
jest.fn().mockImplementation(() => (req, res, next) => {
next();
}),
);
jest.mock(
'./routes',
() =>
class Index {
router() {
return express.Router();
}
},
);
const getApp = require('./app').default;
2016-12-29 11:42:54 +01:00
test('should not throw when valid config', async () => {
const config = createTestConfig();
const app = await getApp(config, {}, {});
expect(typeof app.listen).toBe('function');
2016-12-29 11:42:54 +01:00
});
test('should call preHook', async () => {
2016-12-29 11:42:54 +01:00
let called = 0;
const config = createTestConfig({
2017-06-28 10:17:14 +02:00
preHook: () => {
called++;
},
});
await getApp(config, {}, {});
expect(called).toBe(1);
2016-12-29 11:42:54 +01:00
});
test('should call preRouterHook', async () => {
2016-12-29 11:42:54 +01:00
let called = 0;
const config = createTestConfig({
2017-06-28 10:17:14 +02:00
preRouterHook: () => {
called++;
},
});
await getApp(config, {}, {});
expect(called).toBe(1);
2016-12-29 11:42:54 +01:00
});
describe('compression middleware', () => {
beforeAll(() => {
(compression as jest.Mock).mockClear();
});
afterEach(() => {
(compression as jest.Mock).mockClear();
});
test.each([
{
disableCompression: true,
expectCompressionEnabled: false,
},
{
disableCompression: false,
expectCompressionEnabled: true,
},
{
disableCompression: null,
expectCompressionEnabled: true,
},
{
disableCompression: undefined,
expectCompressionEnabled: true,
},
])(
`should expect the compression middleware to be $expectCompressionEnabled when configInput.server.disableCompression is $disableCompression`,
async ({ disableCompression, expectCompressionEnabled }) => {
const config = createTestConfig({
server: {
disableCompression: disableCompression as any,
},
});
await getApp(config, {}, {});
expect(compression).toBeCalledTimes(+expectCompressionEnabled);
},
);
});