Skip to content

Commit

Permalink
fix(http): fix parameter resolver context value
Browse files Browse the repository at this point in the history
  • Loading branch information
Char2sGu authored and marcj committed Jul 9, 2022
1 parent 1385d26 commit 0703a79
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
2 changes: 1 addition & 1 deletion packages/http/src/router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -758,7 +758,7 @@ export class HttpRouter {
${parameterResolverFoundVar} = true;
parameters.${parameter.parameter.name} = await ${instance}.resolve({
token: ${injectorTokenVar},
routeConfig: ${routeConfigVar},
route: ${routeConfigVar},
request: request,
name: ${JSON.stringify(parameter.parameter.name)},
value: parameters.${parameter.parameter.name},
Expand Down
41 changes: 41 additions & 0 deletions packages/http/tests/parameter-resolver.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { expect, jest, test } from '@jest/globals';
import { http } from '../src/decorator';
import { HttpRequest } from '../src/model';
import {
RouteConfig,
RouteParameterResolver,
RouteParameterResolverContext,
} from '../src/router';
import { createHttpKernel } from './utils';

test('parameter resolver by name', async () => {
class Resolver implements RouteParameterResolver {
resolve(context: RouteParameterResolverContext) {
return 'value';
}
}

@http.controller()
class Controller {
@http.GET().resolveParameterByName('value', Resolver)
route(value: unknown) {}
}

jest.spyOn(Resolver.prototype, 'resolve');
jest.spyOn(Controller.prototype, 'route');

const httpKernel = createHttpKernel([Controller], [Resolver]);
await httpKernel.request(HttpRequest.GET('/'));

const expectedContext: RouteParameterResolverContext = {
name: 'value',
token: undefined,
value: undefined,
route: expect.any(RouteConfig) as any,
request: expect.anything() as any,
query: {},
parameters: { value: 'value' },
};
expect(Resolver.prototype.resolve).toHaveBeenCalledWith(expectedContext);
expect(Controller.prototype.route).toHaveBeenCalledWith('value');
});

0 comments on commit 0703a79

Please sign in to comment.