Skip to content

Commit

Permalink
feat(schema): mutation fields can be disabled
Browse files Browse the repository at this point in the history
  • Loading branch information
tothandras committed Oct 16, 2015
1 parent 48cf1b7 commit b4cd5a4
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 6 deletions.
17 changes: 11 additions & 6 deletions src/schema/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ function getMutationField(graffitiModel, type) {
};
}

function getFields(graffitiModels) {
function getFields(graffitiModels, {mutation} = {mutation: true}) {
const types = getTypes(graffitiModels);

const {queries, mutations} = reduce(types, ({queries, mutations}, type, key) => {
Expand Down Expand Up @@ -177,15 +177,20 @@ function getFields(graffitiModels) {
fields: mutations
});

return {
query: RootQuery,
mutation: RootMutation
const fields = {
query: RootQuery
};

if (mutation) {
fields.mutation = RootMutation;
}

return fields;
}

function getSchema(mongooseModels) {
function getSchema(mongooseModels, options) {
const graffitiModels = getModels(mongooseModels);
const fields = getFields(graffitiModels);
const fields = getFields(graffitiModels, options);
return new GraphQLSchema(fields);
}

Expand Down
9 changes: 9 additions & 0 deletions src/schema/schema.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -147,5 +147,14 @@ describe('field', () => {
expect(schema._schemaConfig.query.name).to.be.equal('RootQuery');
expect(schema._schemaConfig.mutation.name).to.be.equal('RootMutation');
});

it('should return a GraphQL schema without mutations', function getSchemaTest() {
this.sandbox.stub(model, 'getModels').returns({});
this.sandbox.stub(type, 'getTypes').returns(types);
const schema = getSchema([], {mutation: false});
expect(schema).instanceOf(GraphQLSchema);
expect(schema._schemaConfig.query.name).to.be.equal('RootQuery');
expect(schema._schemaConfig.mutation).to.be.equal(undefined);
});
});
});

0 comments on commit b4cd5a4

Please sign in to comment.