outline-express-rest-api
Version:
This package outlines express rest API endpoints & returned values to your terminal
95 lines (81 loc) • 3.11 kB
JavaScript
const TextManager = require('../src/text-manager')
describe('Testing TestManager class in test-manager.js', () => {
let textManager
beforeEach(() => {
textManager = new TextManager()
})
it('Class should have methods property', () => {
expect(textManager).toHaveProperty('methods')
expect(textManager.methods).toEqual([
'append',
'attachment',
'cookie',
'clearCookie',
'download',
'end',
'format',
'get',
'json',
'jsonp',
'links',
'location',
'redirect',
'render',
'send',
'sendFile',
'sendStatus',
'set',
'type',
'vary',
])
})
it('Class should have getSummary & cleanInput methods', () => {
expect(textManager.getSummary).toBeInstanceOf(Function)
expect(textManager.cleanInput).toBeInstanceOf(Function)
})
const cases = [
["return res.status(400).send({ message: 'ok' })", { send: ["{ message: 'ok' }"] }],
["return res.status(400).json({ message: 'ok' })", { json: ["{ message: 'ok' }"] }],
["return res.status(400).location({ message: 'ok' })", { location: ["{ message: 'ok' }"] }],
["return res.status(400).type({ message: 'ok' })", { type: ["{ message: 'ok' }"] }],
]
test.each(cases)('%p summary is expected %p', (firstArg, expectedResult) => {
const result = textManager.getSummary(firstArg)
expect(result).toEqual(expectedResult)
})
test.each([
['folder', 'folder'],
['/folder', 'folder'],
['//folder', 'folder'],
['--folder', '--folder'],
])('cleanInput() %p input is expected to be returned %p', (firstArg, expectedResult) => {
const result = textManager.cleanInput(firstArg)
expect(result).toEqual(expectedResult)
})
it('cleanInput() should throw error for empty input', () => {
expect(() => textManager.cleanInput('')).toThrow(Error)
})
it('outlineRouteObj() should provide an outline', () => {
const routeObj = {}
const handle = "return res.status(400).send({ message: 'ok' })"
const method = 'post'
const stack = [{ method, handle }]
const route = { path: '/:userId', stack }
const endPoint = { route, stack }
routeObj.stack = [endPoint]
expect(textManager.outlineRouteObj(routeObj, true)).toEqual([
{ routeMethod: 'post', routePath: '/:userId', summary: { send: ["{ message: 'ok' }"] } },
])
expect(textManager.outlineRouteObj(routeObj, false)).toEqual([{ routeMethod: 'post', routePath: '/:userId' }])
})
it('getFilename() should provide js filename extracted from a path', () => {
expect(textManager.getFilename('/src/index.js')).toEqual('index.js')
expect(textManager.getFilename('/src/index')).toEqual('')
expect(textManager.getFilename('/src/in.py')).toEqual('')
})
it('EvaluateExtraFeature() should return true, false or give error', () => {
expect(textManager.evaluateExtraFeature('--methods')).toEqual(true)
expect(textManager.evaluateExtraFeature('')).toEqual(false)
expect(() => textManager.evaluateExtraFeature('anything except --methods')).toThrow(Error)
})
})