README
API Tests
Usage
Api tests will go in the __tests__
directory, followed by a folder with the name of the microservice being tested, followed by the api entity that is being tested against. e.g. __tests__/events/members/MembersApiTest.js
When testing against an api, the code for the endpoint should be a module in a file named after the microservice in the services
directory. e.g.
// Filename is Events.js
var axios = require('axios');
var Auth = require('./utils/Auth');
module.exports = {
createMember: (data) => {
return axios.post(`${process.env.EVENTS_URL}/v2/members`, data, Auth.buildAuthHeader(process.env.jwt));
},
}
You would then call this method in your test file and make your assertions in the .then()
of the promise. e.g.
var axios = require('axios');
var Events = require('../../../services/Events.js');
var faker = require('faker');
it('will create a member', () => {
let firstName = faker.name.firstName();
let lastName = faker.name.lastName();
let email = faker.internet.exampleEmail();
return Events.createMember({
first_name: firstName,
last_name: lastName,
email: email,
phone: '(555) 555-5555',
event_id: 'e01cb444aa9f11e6adf812e45ae1cb16',
role_id: 'e07897b4aa9f11e699a6695121512753'
}).then(response => {
expect(response.status).toBe(200);
expect(response.data.gt_event_id).toBe('e01cb444aa9f11e6adf812e45ae1cb16');
expect(response.data.customer.first_name).toBe(firstName);
expect(response.data.customer.last_name).toBe(lastName);
expect(response.data.customer.email).toBe(email);
expect(response.data.customer.phone).toBe('(555) 555-5555');
expect(response.data.role_id).toBe('e07897b4aa9f11e699a6695121512753');
});
});
IMPORTANT You MUST return the promise in the testing code if you want your assertions to run in the tests. Jest will recognize that a promise was returned and wait for it to resolve and check for assertions in the .then()
method.