diff --git a/index.js b/index.js index 5f9dd358..5309e27b 100644 --- a/index.js +++ b/index.js @@ -84,7 +84,9 @@ const fastifyAutoload = async function autoload (fastify, options) { registerAllPlugins(app, pluginFiles, true) } - fastify.register(composedPlugin, { prefix: options.options?.prefix ?? prefix }) + fastify.register(composedPlugin, { + prefix: options.options?.prefix ?? replaceRouteParamPattern(prefix) + }) } } diff --git a/test/issues/374/routes/entity/.autohooks.js b/test/issues/374/routes/entity/.autohooks.js new file mode 100644 index 00000000..951e9583 --- /dev/null +++ b/test/issues/374/routes/entity/.autohooks.js @@ -0,0 +1,8 @@ +'use strict' + +module.exports = async function (app, opts) { + app.addHook('onRequest', async (req, reply) => { + req.hooked = req.hooked || [] + req.hooked.push('root') + }) +} diff --git a/test/issues/374/routes/entity/_entity/index.js b/test/issues/374/routes/entity/_entity/index.js new file mode 100644 index 00000000..c6d63048 --- /dev/null +++ b/test/issues/374/routes/entity/_entity/index.js @@ -0,0 +1,7 @@ +'use strict' + +module.exports = async function (app, opts, next) { + app.get('/', async function (req, reply) { + reply.status(200).send({ path: req.url, hooked: req.hooked, params: req.params }) + }) +} diff --git a/test/issues/374/routes/entity/index.js b/test/issues/374/routes/entity/index.js new file mode 100644 index 00000000..0b14399b --- /dev/null +++ b/test/issues/374/routes/entity/index.js @@ -0,0 +1,7 @@ +'use strict' + +module.exports = async function (app, opts, next) { + app.get('/', async function (req, reply) { + reply.status(200).send({ path: req.url, hooked: req.hooked }) + }) +} diff --git a/test/issues/374/routes/index.js b/test/issues/374/routes/index.js new file mode 100644 index 00000000..51a699b4 --- /dev/null +++ b/test/issues/374/routes/index.js @@ -0,0 +1,7 @@ +'use strict' + +module.exports = async function (app, opts, next) { + app.get('/', async function (req, reply) { + reply.status(200).send({ path: req.url }) + }) +} diff --git a/test/issues/374/test.js b/test/issues/374/test.js new file mode 100644 index 00000000..284d6403 --- /dev/null +++ b/test/issues/374/test.js @@ -0,0 +1,44 @@ +'use strict' + +const t = require('tap') +const path = require('node:path') +const Fastify = require('fastify') +const autoLoad = require('../../../') + +t.plan(10) + +const app = Fastify() + +app.register(autoLoad, { + dir: path.join(__dirname, 'routes'), + autoHooks: true, + cascadeHooks: true +}) + +app.ready(function (err) { + t.error(err) + + app.inject({ + url: '/' + }, function (err, res) { + t.error(err) + t.equal(res.statusCode, 200) + t.same(res.json(), { path: '/' }) + }) + + app.inject({ + url: '/entity' + }, function (err, res) { + t.error(err) + t.equal(res.statusCode, 200) + t.same(res.json(), { path: '/entity', hooked: ['root'] }) + }) + + app.inject({ + url: '/entity/1' + }, function (err, res) { + t.error(err) + t.equal(res.statusCode, 200) + t.same(res.json(), { path: '/entity/1', hooked: ['root'], params: { entity: 1 } }) + }) +})