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:
Can anyone tell me what i'm doing wrong?