Skip to content

Commit 65c1513

Browse files
feat: cjs support in custom middleware file names (#80)
--------- Co-authored-by: Murat Çorlu <[email protected]>
1 parent aaf9925 commit 65c1513

File tree

3 files changed

+27
-6
lines changed

3 files changed

+27
-6
lines changed

index.js

+9-6
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ function escapeRegExp(str) {
1212
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
1313
}
1414

15+
function isJsFile(str) {
16+
return !!str.match(/\.c?js$/);
17+
}
18+
1519
function defaultLogger(params) {
1620
console.log(
1721
`${chalk.bgYellow.black('api-mocker')} ${
@@ -164,7 +168,7 @@ module.exports = function (urlRoot, pathRoot) {
164168
};
165169

166170
const returnForPath = function (filePath, requestParams) {
167-
if (filePath.endsWith('.js')) {
171+
if (isJsFile(filePath)) {
168172
logger({
169173
req, filePath, fileType: 'js', config
170174
});
@@ -217,12 +221,11 @@ module.exports = function (urlRoot, pathRoot) {
217221
if (methodFileExtension === 'auto') {
218222
methodFileExtension = req.accepts(['json', 'xml']);
219223
}
220-
const jsMockFile = `${req.method}.js`;
221-
const staticMockFile = `${req.method}.${methodFileExtension}`;
222-
const wildcardJsMockFile = 'ANY.js';
223-
const wildcardStaticMockFile = `ANY.${methodFileExtension}`;
224224

225-
const methodFiles = [jsMockFile, staticMockFile, wildcardJsMockFile, wildcardStaticMockFile];
225+
const fileExtensions = [methodFileExtension, 'cjs', 'js'];
226+
const jsMockFiles = fileExtensions.map((ext) => `${req.method}.${ext}`);
227+
const wildcardJsMockFiles = fileExtensions.map((ext) => `ANY.${ext}`);
228+
const methodFiles = [...jsMockFiles, ...wildcardJsMockFiles];
226229

227230
const matchedMethodFile = methodFiles.find((methodFile) => fs.existsSync(path.join(targetFullPath, methodFile)));
228231

test/api-mocker.spec.js

+13
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,19 @@ describe('Simple configuration with baseUrl', () => {
102102
});
103103
});
104104

105+
describe('cjs extensions for custom middlewares', () => {
106+
it('responds by simple cjs middleware', (done) => {
107+
request(app)
108+
109+
.get('/api/users/3')
110+
.expect('Content-Type', /json/)
111+
.expect(200)
112+
.expect({
113+
result: 'cjs works'
114+
}, done);
115+
});
116+
});
117+
105118
describe('nextOnNotFound setting', () => {
106119
it('returns correct response when mock is exits', (done) => {
107120
request(app)

test/mocks/users/3/GET.cjs

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = function (req, res) {
2+
res.json({
3+
result: 'cjs works'
4+
});
5+
};

0 commit comments

Comments
 (0)