From de2ab0c120787bad5a345931ce253a9597f4e69e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 2 Feb 2026 15:01:51 +0000 Subject: [PATCH 1/2] Initial plan From ff1e0ec9480e7ec0c3df8d82f5ed2db14841bfb0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 2 Feb 2026 15:09:32 +0000 Subject: [PATCH 2/2] Fix mock sets resolution with folder structure - Fixed path.delimiter to path.sep in lib/mock.js for correct folder parsing - Fixed setRegExp to prevent underscore prefix in set names - Added tests for folder-based mock sets - All tests passing Co-authored-by: sinedied <593151+sinedied@users.noreply.github.com> --- lib/mock.js | 4 ++-- test/mocks/users/get_.json | 1 + test/mocks/users/get___admin.json | 1 + test/mocks/users/get___user.json | 1 + test/smoke.spec.js | 20 ++++++++++++++++++++ 5 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 test/mocks/users/get_.json create mode 100644 test/mocks/users/get___admin.json create mode 100644 test/mocks/users/get___user.json diff --git a/lib/mock.js b/lib/mock.js index d87c65c..2a9c75c 100644 --- a/lib/mock.js +++ b/lib/mock.js @@ -6,7 +6,7 @@ import {pathToRegexp} from 'path-to-regexp'; const methodRegExp = /^([a-z+]+?)_/i; const paramsRegExp = /[$?]([^.\s]+$)/; -const setRegExp = /__([\w-]+?)$/; +const setRegExp = /__([a-z\d][\w-]*)$/i; const defaultType = 'application/octet-stream'; const importFresh = async (moduleName) => { @@ -65,7 +65,7 @@ export function getMock(basePath, file, data = undefined) { const dirComponents = path .dirname(file) - .split(path.delimiter) + .split(path.sep) .filter((c) => c && c !== '.'); const fileComponents = basename.split('#').filter(Boolean); let methods = null; diff --git a/test/mocks/users/get_.json b/test/mocks/users/get_.json new file mode 100644 index 0000000..d9ca071 --- /dev/null +++ b/test/mocks/users/get_.json @@ -0,0 +1 @@ +{"username": "default", "role": "guest"} diff --git a/test/mocks/users/get___admin.json b/test/mocks/users/get___admin.json new file mode 100644 index 0000000..a0195d4 --- /dev/null +++ b/test/mocks/users/get___admin.json @@ -0,0 +1 @@ +{"username": "admin", "role": "admin"} diff --git a/test/mocks/users/get___user.json b/test/mocks/users/get___user.json new file mode 100644 index 0000000..ed5848d --- /dev/null +++ b/test/mocks/users/get___user.json @@ -0,0 +1 @@ +{"username": "john", "role": "user"} diff --git a/test/smoke.spec.js b/test/smoke.spec.js index a234d90..6380bf9 100644 --- a/test/smoke.spec.js +++ b/test/smoke.spec.js @@ -119,6 +119,26 @@ describe('smoke server', () => { expect(response.body).toEqual({hello: 'world'}); }); + + it('should use mock set with folder structure (admin set)', async () => { + app = await createServer({...options, set: 'admin'}); + const response = await request(app).get('/users'); + + expect(response.body).toEqual({username: 'admin', role: 'admin'}); + }); + + it('should use mock set with folder structure (user set)', async () => { + app = await createServer({...options, set: 'user'}); + const response = await request(app).get('/users'); + + expect(response.body).toEqual({username: 'john', role: 'user'}); + }); + + it('should use default mock when no set is specified with folder structure', async () => { + const response = await request(app).get('/users'); + + expect(response.body).toEqual({username: 'default', role: 'guest'}); + }); }); describe('should handle custom responses', () => {