Skip to content

Commit 59bdd46

Browse files
committed
Bugfixes and persist integration test
1 parent b02e722 commit 59bdd46

File tree

5 files changed

+39
-33
lines changed

5 files changed

+39
-33
lines changed

src/queryBuilder.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,8 @@ export default class QueryBuilder {
158158
public buildQuery (type: string, name?: string, args?: Arguments, model?: (Model | null | string), fields?: string, addModelToArgs: boolean = false, multiple?: boolean) {
159159
model = model ? this.getModel(model) : null;
160160

161-
if (!args) args = {};
161+
args = args ? JSON.parse(JSON.stringify(args)) : {};
162+
if (!args) throw new Error("args is undefined");
162163
if (addModelToArgs && model) args[model.singularName] = { __type: upcaseFirstLetter(model.singularName) };
163164

164165
multiple = multiple === undefined ? !args['id'] : multiple;

src/vuex-orm-apollo.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,13 +212,14 @@ export default class VuexORMApollo {
212212
private async mutate (action: string, data: Data | undefined, dispatch: DispatchFunction, model: Model, addModelToArgs: boolean = false, multiple?: boolean): Promise<any> {
213213
if (data) {
214214
const id = data.id ? data.id : undefined;
215-
// TODO what about the quers fields?
216-
const query = this.queryBuilder.buildQuery('mutation', action, data, model, undefined, addModelToArgs, multiple);
217-
218215
const variables: Data = {
219216
[model.singularName]: this.queryBuilder.transformOutgoingData(data)
220217
};
221218

219+
// TODO what about the query fields?
220+
const query = this.queryBuilder.buildQuery('mutation', action, variables, model, undefined, addModelToArgs, multiple);
221+
222+
// TODO don't add id for persist
222223
if (id) variables['id'] = id;
223224

224225
// Send GraphQL Mutation

test/integration/VuexORMApollo.spec.js

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -139,36 +139,36 @@ query User($id: ID!) {
139139

140140
expect(request.variables).toEqual({});
141141
expect(request.query).toEqual(`
142-
query Users {
143-
users {
144-
nodes {
145-
id
146-
name
147-
posts {
148-
nodes {
149-
id
150-
title
151-
content
152-
__typename
153-
}
142+
query Users {
143+
users {
144+
nodes {
145+
id
146+
name
147+
posts {
148+
nodes {
149+
id
150+
title
151+
content
154152
__typename
155153
}
156154
__typename
157155
}
158156
__typename
159157
}
158+
__typename
160159
}
160+
}
161161
`.trim() + "\n");
162162
});
163163
});
164164
});
165165

166166

167-
describe('create', () => {
167+
describe('persist', () => {
168168
it('sends the correct query to the API', async () => {
169169
const response = {
170170
data: {
171-
user: {
171+
createUser: {
172172
__typename: 'user',
173173
id: 1,
174174
name: 'Johnny Imba',
@@ -181,26 +181,26 @@ query User($id: ID!) {
181181
};
182182

183183
const request = await sendWithMockFetch(response, async () => {
184-
await store.dispatch('entities/users/create', { user: { name: 'Charlie Brown' } });
184+
await store.dispatch('entities/users/persist', { id: 1 });
185185
});
186186

187-
expect(request.variables).toEqual({ user: { name: 'Charlie Brown' } });
187+
expect(request.variables).toEqual({ id: 1, user: { name: 'Johnny Imba' } });
188188
expect(request.query).toEqual(`
189-
mutation createUser($user: UserInput!) {
190-
createUser(user: $user) {
191-
id
192-
name
193-
posts {
194-
nodes {
195-
id
196-
title
197-
content
189+
mutation CreateUser($user: UserInput!) {
190+
createUser(user: $user) {
191+
id
192+
name
193+
posts {
194+
nodes {
195+
id
196+
title
197+
content
198+
__typename
199+
}
198200
__typename
199201
}
200202
__typename
201203
}
202-
__typename
203-
}
204204
}
205205
`.trim() + "\n");
206206
});

test/support/Helpers.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,17 @@ export async function sendWithMockFetch(response, callback) {
3838

3939
try {
4040
await callback();
41+
4142
} catch (error) {
4243
console.error("An error occured:");
4344
console.error(error);
4445
throw new Error("Request failed!");
4546
}
4647

4748
const request = fetchMock.lastCall();
49+
50+
if (!request) throw new Error("No request was made!");
51+
4852
fetchMock.restore();
4953

5054
/*

test/unit/QueryBuilder.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,8 @@ query users {
298298
query = QueryBuilder.prettify(query.loc.source.body);
299299

300300
expect(query).toEqual(`
301-
query Users($_c: String!) {
302-
users(_c: $_c) {
301+
query Users {
302+
users {
303303
nodes {
304304
id
305305
name

0 commit comments

Comments
 (0)