UNPKG

@whook/whook

Version:

Build strong and efficient REST web services.

149 lines 4.56 kB
import { describe, test, beforeEach, jest, expect } from '@jest/globals'; import initWhookPluginsPaths, { WHOOK_PROJECT_PLUGIN_NAME, } from './WHOOK_RESOLVED_PLUGINS.js'; import { YError } from 'yerror'; describe('WHOOK_RESOLVED_PLUGINS', () => { const MAIN_FILE_URL = 'file:///home/whoiam/project/src/index.ts'; const log = jest.fn(); const resolve = jest.fn(); const readDir = jest.fn(); beforeEach(() => { log.mockReset(); resolve.mockReset(); readDir.mockReset(); }); describe('should work', () => { test('with no plugin at all', async () => { const WHOOK_RESOLVED_PLUGINS = await initWhookPluginsPaths({ MAIN_FILE_URL, WHOOK_PLUGINS: [], resolve, readDir, log, }); expect({ WHOOK_RESOLVED_PLUGINS, logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')), resolveCalls: resolve.mock.calls, }).toMatchInlineSnapshot(` { "WHOOK_RESOLVED_PLUGINS": {}, "logCalls": [], "resolveCalls": [], } `); }); test('with some plugins', async () => { resolve.mockReturnValueOnce('file:///var/lib/node/node_modules/@whook/graphql/dist/index.js'); resolve.mockReturnValueOnce('file:///var/lib/node/node_modules/@whook/whook/dist/index.js'); readDir.mockResolvedValueOnce(['routes', 'wrappers', 'libs']); readDir.mockResolvedValueOnce(['services', 'libs']); readDir.mockResolvedValueOnce(['routes']); const WHOOK_RESOLVED_PLUGINS = await initWhookPluginsPaths({ MAIN_FILE_URL, WHOOK_PLUGINS: [ WHOOK_PROJECT_PLUGIN_NAME, '@whook/graphql', '@whook/whook', ], resolve, readDir, log, }); expect({ WHOOK_RESOLVED_PLUGINS, logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')), resolveCalls: resolve.mock.calls, }).toMatchInlineSnapshot(` { "WHOOK_RESOLVED_PLUGINS": { "@whook/graphql": { "mainURL": "file:///var/lib/node/node_modules/@whook/graphql/dist/index.js", "types": [ "services", ], }, "@whook/whook": { "mainURL": "file:///var/lib/node/node_modules/@whook/whook/dist/index.js", "types": [ "routes", ], }, "__project__": { "mainURL": "file:///home/whoiam/project/src/index.ts", "types": [ "routes", "wrappers", ], }, }, "logCalls": [ [ "debug", "➰ - Plugin "__project__" source path resolved to "file:///home/whoiam/project/src" with "routes, wrappers" types.", ], [ "debug", "➰ - Plugin "@whook/graphql" source path resolved to "file:///var/lib/node/node_modules/@whook/graphql/dist" with "services" types.", ], [ "debug", "➰ - Plugin "@whook/whook" source path resolved to "file:///var/lib/node/node_modules/@whook/whook/dist" with "routes" types.", ], ], "resolveCalls": [ [ "@whook/graphql", ], [ "@whook/whook", ], ], } `); }); }); describe('should fail', () => { test('with not existing plugin', async () => { resolve.mockImplementationOnce(() => { throw new YError('E_NO_MODULE'); }); try { await initWhookPluginsPaths({ MAIN_FILE_URL, WHOOK_PLUGINS: ['@whook/unreal'], resolve, readDir, log, }); throw new YError('E_UNEXPECTED_SUCCESS'); } catch (err) { expect({ errorCode: err.code, errorParams: err.params, logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')), resolveCalls: resolve.mock.calls, }).toMatchInlineSnapshot(` { "errorCode": "E_BAD_WHOOK_PLUGIN", "errorParams": [ "@whook/unreal", ], "logCalls": [ [ "error", "❌ - Plugin "@whook/unreal" couldn't be resolved.", ], ], "resolveCalls": [ [ "@whook/unreal", ], ], } `); } }); }); }); //# sourceMappingURL=WHOOK_RESOLVED_PLUGINS.test.js.map