diff --git a/packages/resourcer/src/__tests__/resourcer.test.ts b/packages/resourcer/src/__tests__/resourcer.test.ts index 929ad5379..81aff4d4a 100644 --- a/packages/resourcer/src/__tests__/resourcer.test.ts +++ b/packages/resourcer/src/__tests__/resourcer.test.ts @@ -170,6 +170,52 @@ describe('resourcer', () => { expect(context.arr).toStrictEqual([11,22]); }); + it('registerHandlers()', async () => { + const resourcer = new Resourcer(); + + resourcer.registerHandlers({ + 'list': async(ctx, next) => { + ctx.arr.push(11); + await next(); + ctx.arr.push(22); + }, + }); + + resourcer.registerHandlers({ + 'get': async(ctx, next) => { + ctx.arr.push(33); + await next(); + ctx.arr.push(44); + }, + }); + + resourcer.define({ + name: 'test', + }); + + let context = { + arr: [], + }; + + await resourcer.execute({ + resource: 'test', + action: 'list', + }, context); + + expect(context.arr).toStrictEqual([11,22]); + + context = { + arr: [], + }; + + await resourcer.execute({ + resource: 'test', + action: 'get', + }, context); + + expect(context.arr).toStrictEqual([33,44]); + }); + it('only', async () => { const resourcer = new Resourcer(); diff --git a/packages/resourcer/src/__tests__/utils.test.ts b/packages/resourcer/src/__tests__/utils.test.ts index fd73d94c0..1eff2b202 100644 --- a/packages/resourcer/src/__tests__/utils.test.ts +++ b/packages/resourcer/src/__tests__/utils.test.ts @@ -186,7 +186,7 @@ describe('utils', () => { it('actions options', () => { const params = parseRequest({ - path: '/user.posts:list', + path: '/resourcer/user.posts:list', method: 'GET', }); expect(params).toEqual({ associatedName: 'user', resourceName: 'posts', actionName: 'list' }); diff --git a/packages/resourcer/src/resourcer.ts b/packages/resourcer/src/resourcer.ts index 26157b8c8..9cc33bc70 100644 --- a/packages/resourcer/src/resourcer.ts +++ b/packages/resourcer/src/resourcer.ts @@ -175,7 +175,9 @@ export class Resourcer { * @param handlers */ registerHandlers(handlers: Handlers) { - this.handlers = new Map(Object.entries(handlers)); + for (const [name, handler] of Object.entries(handlers)) { + this.registerHandler(name, handler); + } } registerHandler(name: ActionName, handler: HandlerType) {