-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.mjs
More file actions
99 lines (89 loc) · 2.14 KB
/
setup.mjs
File metadata and controls
99 lines (89 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import { jest } from '@jest/globals';
/**
* Test helper utilities for FuncDock functions
*/
/**
* Creates a mock request/response pair for testing handlers
* @param {Function} handler - The handler function to test
* @param {Object} options - Test options
* @returns {Promise<{req: Object, res: Object, statusCode: number, data: any}>}
*/
export function testHandler(handler, options = {}) {
const {
method = 'GET',
query = {},
body = {},
headers = {},
env = {},
params = {},
path = '/',
} = options;
const logger = {
info: jest.fn(),
error: jest.fn(),
warn: jest.fn(),
debug: jest.fn(),
log: jest.fn(),
};
const req = {
method: method.toUpperCase(),
query,
body,
headers: { 'content-type': 'application/json', 'user-agent': 'jest', ...headers },
env,
params,
logger,
originalUrl: path,
url: path,
path,
ip: '127.0.0.1',
functionName: 'test-function',
functionPath: '/tmp/test-function',
routePath: path,
routeHandler: 'handler.js',
};
let statusCode = 200;
let responseData = null;
let responseHeaders = {};
const res = {
status(code) {
statusCode = code;
return res;
},
json(data) {
responseData = data;
return res;
},
send(data) {
responseData = data;
return res;
},
text(data) {
responseData = data;
return res;
},
header(key, value) {
responseHeaders[key] = value;
return res;
},
end() {
return res;
},
getStatus: () => statusCode,
getData: () => responseData,
getHeaders: () => responseHeaders,
};
const result = handler(req, res, () => {});
if (result && typeof result.then === 'function') {
return result.then(() => ({ req, res, statusCode, data: responseData }));
}
return Promise.resolve({ req, res, statusCode, data: responseData });
}
/**
* Assertion helper for status codes
* @param {Object} res - Mock response object
* @param {number} expectedStatus - Expected HTTP status code
*/
export function expectStatus(res, expectedStatus) {
expect(res.getStatus()).toBe(expectedStatus);
}