GraphQL: Nested File Upload (#6372)

* wip

* wip

* tested

* wip

* tested
This commit is contained in:
Antoine Cormouls
2020-01-28 04:16:53 +01:00
committed by Antonio Davi Macedo Coelho de Castro
parent df3fa029bc
commit 30a5aa0b61
5 changed files with 178 additions and 82 deletions

View File

@@ -9228,6 +9228,7 @@ describe('ParseGraphQLServer', () => {
);
const someFieldValue = result.data.createFile.fileInfo.name;
const someFieldObjectValue = result.data.createFile.fileInfo;
await apolloClient.mutate({
mutation: gql`
@@ -9253,17 +9254,25 @@ describe('ParseGraphQLServer', () => {
await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear();
const createResult = await apolloClient.mutate({
mutation: gql`
const body2 = new FormData();
body2.append(
'operations',
JSON.stringify({
query: `
mutation CreateSomeObject(
$fields1: CreateSomeClassFieldsInput
$fields2: CreateSomeClassFieldsInput
$fields3: CreateSomeClassFieldsInput
) {
createSomeClass1: createSomeClass(
input: { fields: $fields1 }
) {
someClass {
id
someField {
name
url
}
}
}
createSomeClass2: createSomeClass(
@@ -9271,20 +9280,79 @@ describe('ParseGraphQLServer', () => {
) {
someClass {
id
someField {
name
url
}
}
}
createSomeClass3: createSomeClass(
input: { fields: $fields3 }
) {
someClass {
id
someField {
name
url
}
}
}
}
`,
variables: {
fields1: {
someField: someFieldValue,
`,
variables: {
fields1: {
someField: { file: someFieldValue },
},
fields2: {
someField: {
file: {
name: someFieldObjectValue.name,
url: someFieldObjectValue.url,
__type: 'File',
},
},
},
fields3: {
someField: { upload: null },
},
},
fields2: {
someField: someFieldValue.name,
},
},
})
);
body2.append(
'map',
JSON.stringify({ 1: ['variables.fields3.someField.upload'] })
);
body2.append('1', 'My File Content', {
filename: 'myFileName.txt',
contentType: 'text/plain',
});
res = await fetch('http://localhost:13377/graphql', {
method: 'POST',
headers,
body: body2,
});
expect(res.status).toEqual(200);
const result2 = JSON.parse(await res.text());
expect(
result2.data.createSomeClass1.someClass.someField.name
).toEqual(jasmine.stringMatching(/_myFileName.txt$/));
expect(
result2.data.createSomeClass1.someClass.someField.url
).toEqual(jasmine.stringMatching(/_myFileName.txt$/));
expect(
result2.data.createSomeClass2.someClass.someField.name
).toEqual(jasmine.stringMatching(/_myFileName.txt$/));
expect(
result2.data.createSomeClass2.someClass.someField.url
).toEqual(jasmine.stringMatching(/_myFileName.txt$/));
expect(
result2.data.createSomeClass3.someClass.someField.name
).toEqual(jasmine.stringMatching(/_myFileName.txt$/));
expect(
result2.data.createSomeClass3.someClass.someField.url
).toEqual(jasmine.stringMatching(/_myFileName.txt$/));
const schema = await new Parse.Schema('SomeClass').get();
expect(schema.fields.someField.type).toEqual('File');
@@ -9324,7 +9392,7 @@ describe('ParseGraphQLServer', () => {
}
`,
variables: {
id: createResult.data.createSomeClass1.someClass.id,
id: result2.data.createSomeClass1.someClass.id,
},
});
@@ -9335,8 +9403,8 @@ describe('ParseGraphQLServer', () => {
expect(getResult.data.someClass.someField.url).toEqual(
result.data.createFile.fileInfo.url
);
expect(getResult.data.findSomeClass1.edges.length).toEqual(1);
expect(getResult.data.findSomeClass2.edges.length).toEqual(1);
expect(getResult.data.findSomeClass1.edges.length).toEqual(3);
expect(getResult.data.findSomeClass2.edges.length).toEqual(3);
res = await fetch(getResult.data.someClass.someField.url);