loopback-graphql
Version:
Add Apollo Server or GraphQL queries on your Loopback server
127 lines (114 loc) • 2.92 kB
text/typescript
;
import { gqlRequest } from './testHelper';
import gql from 'graphql-tag';
// var _ = require('lodash');
describe.only('mutation', () => {
it('should add and Delete single entity', () => {
let id;
const createAuthor = gql`
mutation save ($obj: AuthorInput!) {
saveAuthor (obj: $obj) {
first_name
last_name
birth_date
id
}
}
`;
const authorInput = {
first_name: 'Virginia',
last_name: 'Wolf',
birth_date: new Date(),
};
const deleteAuthor = gql`
mutation delete ($id: ID!) {
deleteAuthor (id: $id) {
text
}
}
`;
return gqlRequest(createAuthor, 200, {
obj: authorInput,
})
.then(res => {
id = res.body.data.saveAuthor.id;
return gqlRequest(deleteAuthor, 200, {
id: id,
});
});
});
it('should add a single entity with sub type', () => {
const body = 'Heckelbery Finn';
const query = gql`
mutation save ($obj: NoteInput!) {
saveNote (obj: $obj) {
id
title
author {
first_name
last_name
}
}
}
`;
const variables = {
obj: {
title: 'Heckelbery Finn',
content: {
body: body,
footer: 'The end',
},
},
};
return gqlRequest(query, 200, variables)
.then(res => {
expect(res.body.data.saveNote.title).toEqual(body);
});
});
describe('remote methods', () => {
const userInput = {
email: 'John@a.com',
password: '123456',
username: 'John@a.com',
};
const createUser = `
mutation userCreate ($obj: UserInput!) {
saveUser ( obj: $obj ) {
id
}
}
`;
const deleteUser = gql`
mutation delete ($id: ID!) {
deleteAuthor (id: $id) {
text
}
}
`;
let userId;
beforeEach(() => {
return gqlRequest(createUser, 200, {
obj: userInput,
})
.then(res => {
userId = res.body.data.saveUser.id;
});
});
afterEach(() => {
return gqlRequest(deleteUser, 200, {
id: userId,
});
});
it.skip('should login and return an accessToken', () => {
const query = gql`
mutation login{
UserLogin(credentials:{username:"John@a.com", password:"123456"})
}
`;
return gqlRequest(query, 200)
.then(res => {
expect(res.body.data.UserLogin).toHaveProperty('id');
});
});
});
});