How to test a Nest.js parameter decorator that uses graphql execution context

Viewed 375

I have created a decorator to retrieve the graphql query context and do some logic with it. It looks like this:

export const GraphQlProjections = (options?: ProjectionOptions) =>
  createParamDecorator<ProjectionOptions, ExecutionContext, string[]>(
    (opts: ProjectionOptions, ctx: ExecutionContext) => {
      const gqlContext = GqlExecutionContext.create(ctx)
      const info = gqlContext.getInfo()

      const fields = Object.keys(fieldsProjection(info, opts))

      return fields
    }
  )(options)

I'd like to write some unit tests for this - but I have no idea how to even go about it.

I've found some documentation for getting the decorator factory, but this does not help with setting up/mocking execution context to allow. Apollo server docs seem to reference some sort of mocking, but doesn't tell me how to achieve my goal.

I basically need to say 'Given this query, say, Query { user { name } }, what will my decorator return?'

To achieve this, it seems i need to somehow mock the execution context to contain a GraphQLResolveInfo object, which I also somehow need to generate. How can I achieve this? Or am i going about this the wrong way?

0 Answers
Related