Fix Unknow type merge bug on overloaded types (#6494)
* Fix Unknow type bug on overloaded types * check args too
This commit is contained in:
@@ -10821,11 +10821,11 @@ describe('ParseGraphQLServer', () => {
|
||||
expect(result2.data.someClass.name).toEqual('aname');
|
||||
expect(result.data.someClass.language).toEqual('fr');
|
||||
const result3 = await apolloClient.mutate({
|
||||
variables: { id: obj.id, name: 'anewname' },
|
||||
variables: { id: obj.id, name: 'anewname', type: 'human' },
|
||||
mutation: gql`
|
||||
mutation someClass($id: ID!, $name: String!) {
|
||||
mutation someClass($id: ID!, $name: String!, $type: TypeEnum!) {
|
||||
updateSomeClass(
|
||||
input: { id: $id, fields: { name: $name, type: human } }
|
||||
input: { id: $id, fields: { name: $name, type: $type } }
|
||||
) {
|
||||
someClass {
|
||||
nameUpperCase
|
||||
|
||||
@@ -211,7 +211,33 @@ class ParseGraphQLSchema {
|
||||
const autoGraphQLSchemaType = this.graphQLAutoSchema.getType(
|
||||
customGraphQLSchemaType.name
|
||||
);
|
||||
if (autoGraphQLSchemaType) {
|
||||
if (
|
||||
autoGraphQLSchemaType &&
|
||||
typeof customGraphQLSchemaType.getFields === 'function'
|
||||
) {
|
||||
const findAndAddLastType = type => {
|
||||
if (type.name) {
|
||||
if (!this.graphQLAutoSchema.getType(type)) {
|
||||
// To avoid schema stitching (Unknow type) bug on variables
|
||||
// transfer the final type to the Auto Schema
|
||||
this.graphQLAutoSchema._typeMap[type.name] = type;
|
||||
}
|
||||
} else {
|
||||
if (type.ofType) {
|
||||
findAndAddLastType(type.ofType);
|
||||
}
|
||||
}
|
||||
};
|
||||
Object.values(customGraphQLSchemaType.getFields()).forEach(
|
||||
field => {
|
||||
findAndAddLastType(field.type);
|
||||
if (field.args) {
|
||||
field.args.forEach(arg => {
|
||||
findAndAddLastType(arg.type);
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
autoGraphQLSchemaType._fields = {
|
||||
...autoGraphQLSchemaType._fields,
|
||||
...customGraphQLSchemaType._fields,
|
||||
|
||||
Reference in New Issue
Block a user