Skip to content

Commit

Permalink
feat(integration): add single integration displaying
Browse files Browse the repository at this point in the history
  • Loading branch information
serge1peshcoff committed Apr 28, 2019
1 parent 45ae264 commit bb73032
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 0 deletions.
7 changes: 7 additions & 0 deletions lib/integrations.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ exports.findIntegration = async (req, res, next) => {
return next();
};

exports.getIntegration = async (req, res) => {
return res.json({
success: true,
data: req.integration
});
};

exports.updateIntegration = async (req, res) => {
if (!req.permissions.manage_discounts) {
return errors.makeForbiddenError(res, 'You are not allowed to update integration.');
Expand Down
1 change: 1 addition & 0 deletions lib/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ GeneralRouter.get('/integrations', integrations.listAllIntegrations);
GeneralRouter.post('/integrations', integrations.createIntegration);
GeneralRouter.post('/integrations/:integration_id/codes', integrations.findIntegration, integrations.addCodesToIntegration);
GeneralRouter.post('/integrations/:integration_id/claim', integrations.findIntegration, integrations.claimCode);
GeneralRouter.get('/integrations/:integration_id', integrations.findIntegration, integrations.getIntegration);
GeneralRouter.put('/integrations/:integration_id', integrations.findIntegration, integrations.updateIntegration);
GeneralRouter.delete('/integrations/:integration_id', integrations.findIntegration, integrations.deleteIntegration);

Expand Down
63 changes: 63 additions & 0 deletions test/api/integrations-display.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
const { startServer, stopServer } = require('../../lib/server.js');
const { request } = require('../scripts/helpers');
const mock = require('../scripts/mock-core-registry');
const generator = require('../scripts/generator');

describe('Integrations displaying', () => {
beforeEach(async () => {
mock.mockAll();
await startServer();
});

afterEach(async () => {
await stopServer();
mock.cleanAll();

await generator.clearAll();
});

test('should succeed if everything is okay', async () => {
const integration = await generator.createIntegration({ code: 'first' });
const res = await request({
uri: '/integrations/' + integration.id,
method: 'GET',
headers: { 'X-Auth-Token': 'blablabla' }
});

expect(res.statusCode).toEqual(200);
expect(res.body.success).toEqual(true);
expect(res.body).not.toHaveProperty('errors');
expect(res.body).toHaveProperty('data');

expect(res.body.data.id).toEqual(integration.id);
});

test('should return 404 if the integration is not found', async () => {
const res = await request({
uri: '/integrations/random',
method: 'GET',
headers: { 'X-Auth-Token': 'blablabla' }
});

expect(res.statusCode).toEqual(404);
expect(res.body.success).toEqual(false);
expect(res.body).not.toHaveProperty('data');
expect(res.body).toHaveProperty('message');
});

test('should find integration by code', async () => {
const integration = await generator.createIntegration({ code: 'first' });
const res = await request({
uri: '/integrations/first',
method: 'GET',
headers: { 'X-Auth-Token': 'blablabla' }
});

expect(res.statusCode).toEqual(200);
expect(res.body.success).toEqual(true);
expect(res.body).not.toHaveProperty('errors');
expect(res.body).toHaveProperty('data');

expect(res.body.data.id).toEqual(integration.id);
});
});

0 comments on commit bb73032

Please sign in to comment.