diff --git a/test/delete.test.js b/test/delete.test.js index 1d2c9a4d..11251ed2 100644 --- a/test/delete.test.js +++ b/test/delete.test.js @@ -1,74 +1,20 @@ 'use strict'; -var Airtable = require('../lib/airtable'); -var express = require('express'); -var bodyParser = require('body-parser'); -var getPort = require('get-port'); -var util = require('util'); +var testHelpers = require('./test_helpers'); describe('record deletion', function () { var airtable; - var testServer; - var testServerPort; + var teardownAsync; beforeAll(function () { - var app = express(); - - app.use(bodyParser.json()); - - function checkParamsMiddleware(req, res, next) { - var areParamsValid = ( - (req.get('authorization') === 'Bearer key123') && - (req.params.baseId === 'app123') && - (req.params.tableIdOrName === 'Table') - ); - if (areParamsValid) { - next(); - } else { - next(new Error('Bad parameters')); - } - } - - app.delete('/v0/:baseId/:tableIdOrName/:recordId', checkParamsMiddleware, function (req, res, next) { - res.json({ - id: req.params.recordId, - deleted: true - }); - }); - - app.delete('/v0/:baseId/:tableIdOrName', checkParamsMiddleware, function (req, res, next) { - res.json({ - records: req.query.records.map(function (recordId) { - return { - id: recordId, - deleted: true - }; - }) - }); - }); - - return getPort().then(function (port) { - testServerPort = port; - - airtable = new Airtable({ - apiKey: 'key123', - endpointUrl: 'http://localhost:' + testServerPort - }); - - return new Promise(function (resolve, reject) { - testServer = app.listen(testServerPort, function (err) { - if (err) { - reject(err); - } else { - resolve(); - } - }); - }); + return testHelpers.getMockEnvironmentAsync().then(function (env) { + airtable = env.airtable; + teardownAsync = env.teardownAsync; }); }); afterAll(function () { - return util.promisify(testServer.close.bind(testServer))(); + return teardownAsync(); }); it('can delete one record', function () { diff --git a/test/test_helpers.js b/test/test_helpers.js new file mode 100644 index 00000000..f810aaa2 --- /dev/null +++ b/test/test_helpers.js @@ -0,0 +1,66 @@ +'use strict'; + +var Airtable = require('../lib/airtable'); +var express = require('express'); +var bodyParser = require('body-parser'); +var getPort = require('get-port'); +var util = require('util'); + +function getMockEnvironmentAsync() { + var app = express(); + + app.use(bodyParser.json()); + + app.delete('/v0/:baseId/:tableIdOrName/:recordId', _checkParamsMiddleware, function (req, res, next) { + res.json({ + id: req.params.recordId, + deleted: true + }); + }); + + app.delete('/v0/:baseId/:tableIdOrName', _checkParamsMiddleware, function (req, res, next) { + res.json({ + records: req.query.records.map(function (recordId) { + return { + id: recordId, + deleted: true + }; + }) + }); + }); + + return getPort().then(function (testServerPort) { + return new Promise(function (resolve, reject) { + var testServer = app.listen(testServerPort, function (err) { + if (err) { + reject(err); + } else { + resolve({ + airtable: new Airtable({ + apiKey: 'key123', + endpointUrl: 'http://localhost:' + testServerPort, + }), + teardownAsync: util.promisify(testServer.close.bind(testServer)), + }); + } + }); + }); + }); +} + +function _checkParamsMiddleware(req, res, next) { + var areParamsValid = ( + (req.get('authorization') === 'Bearer key123') && + (req.params.baseId === 'app123') && + (req.params.tableIdOrName === 'Table') + ); + if (areParamsValid) { + next(); + } else { + next(new Error('Bad parameters')); + } +} + +module.exports = { + getMockEnvironmentAsync: getMockEnvironmentAsync, +};