MirageJS GraphQL resolver returning empty list despite being called

48 Views Asked by At

I'm using Mirage.js to mock my GraphQL API, but I'm encountering an issue with my resolver. Although I can see that the resolver is being called (console.log statements are executed), the response I receive always has an empty list (list: null). I have verified that my resolver is returning the expected data structure with static values. Here's a simplified version of my code:

// Mirage.js resolver
const resolvers = {
  Query: {
    explore: (parent, { input }, { mirageSchema: { db } }, info) => {
      const response = {
          list: [
            {
              name: 'Test',
              id: '123',
              external_url: 'https://www.google.com',
              scan_date: '2021-09-01',
              provider: 'aws'
            },
          ],
          pageInfo: {
            pageSize: 100,
            totalCount: 1,
          }
      };

      return response;
    },
  },
};

export default resolvers;

And here is my mirage.js code:

import { Image } from '@argonsecurity/cnapp-appsync-types';
import { createGraphQLHandler } from '@miragejs/graphql';
import { Factory, createServer } from 'miragejs';
import { FactoryDefinition, ModelDefinition } from 'miragejs/-types';

import signinResponse from '@/mock/signin-response.json';

import { resolvers } from './resolvers';
import { schema } from './schema';

type MockServerModels = {
  image: ModelDefinition<Image>;
};
type MockServerFactories = {
  image: FactoryDefinition<Image>;
};

if (import.meta.env.MODE === 'mock') {
  const server = createServer<MockServerModels, MockServerFactories>({
    routes() {
      this.post(
        '/graphql',
        createGraphQLHandler(schema, this.schema, { resolvers }),
      );
    },
    seeds(server) {
      const image: Image = {
        id: '123',
        external_id: '1',
        name: 'test',
        provider: 'aws',
        updated_at: new Date().toISOString(),
        discovered_at: new Date().toISOString(),
      };
      server.create('image', image);
    },
  });

  Object.assign(window, { server });
}

And here is an excerpt of my schema:

type ExploreResult implements ResourceResponseInterface & PaginationResponseInterface {
list: [ResourceInterface]
pageInfo: PaginationResponse
}

type PaginationResponse {
  totalCount: Int!
  pageSize: Int!
}

interface PaginationResponseInterface {
  pageInfo: PaginationResponse
}

interface ResourceInterface {
  id: ID
  name: String
  provider: String
  external_id: String
  external_url: String
  scan_date: AWSDateTime
  discovered_at: AWSDateTime
  updated_at: AWSDateTime
}

interface ResourceResponseInterface {
list: [ResourceInterface]
}
scalar AWSJSON
scalar AWSDateTime


type Query {
  explore(input: ExploreInput!): ExploreResult
}

I keep getting this response from mirage:

enter image description here

Can anyone tell me what i'm doing wrong?

0

There are 0 best solutions below