0

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?

Tomer
  • 17,787
  • 15
  • 78
  • 137

0 Answers0