basic tests, initialize readme
This commit is contained in:
parent
6143e972e1
commit
55f631de02
21
index.js
21
index.js
@ -1,40 +1,39 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
/**
|
||||
* Load all request handlers in the given folder
|
||||
*
|
||||
* @param {any} express app
|
||||
* @param {any} app express app
|
||||
* @param {string} modulefolder
|
||||
* @param {any} object to pass to the handlers (for example database access)
|
||||
* @param {any} opts object to pass to the handlers (for example database access)
|
||||
*/
|
||||
module.exports = function (app, modulefolder, opts) {
|
||||
for (const f of fs.readdirSync(modulefolder)) {
|
||||
const regex = /(.*?)-(.*?)\.js/;
|
||||
let [, method, url] = regex.exec(f);
|
||||
url = '/' + url.replace(/^root/i, '').replace(/\./g, '/').replace(/\/\//g, '');
|
||||
url = '/' + url.replace(/^root/i, '').replace(/\./g, '/').replace(/\/+/g, '/');
|
||||
|
||||
const handler = require(path.join('./', modulefolder, f));
|
||||
const handler = require(('./' + modulefolder + '/' + f).replace(/\/\.\//g, '/').replace(/\/+/g, '/'));
|
||||
const func = (req, res, next) => {
|
||||
handler(req, res, next, opts);
|
||||
};
|
||||
|
||||
switch (method) {
|
||||
case 'post':
|
||||
app.post(path, func);
|
||||
app.post(url, func);
|
||||
break;
|
||||
case 'get':
|
||||
app.get(path, func);
|
||||
app.get(url, func);
|
||||
break;
|
||||
case 'put':
|
||||
app.put(path, func);
|
||||
app.put(url, func);
|
||||
break;
|
||||
case 'delete':
|
||||
app.delete(path, func);
|
||||
app.delete(url, func);
|
||||
break;
|
||||
case 'all':
|
||||
app.all(path, func);
|
||||
app.all(url, func);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
30
test/main.js
Normal file
30
test/main.js
Normal file
@ -0,0 +1,30 @@
|
||||
const {describe, it} = require('mocha');
|
||||
const expect = require('chai').expect;
|
||||
|
||||
const requestor = require('../index');
|
||||
|
||||
const mock = {
|
||||
registered: {},
|
||||
post: function (path, handler) {
|
||||
this.registered['post-' + path] = handler;
|
||||
},
|
||||
get: function (path, handler) {
|
||||
this.registered['get-' + path] = handler;
|
||||
},
|
||||
put: function (path, handler) {
|
||||
this.registered['put-' + path] = handler;
|
||||
},
|
||||
delete: function (path, handler) {
|
||||
this.registered['delete-' + path] = handler;
|
||||
},
|
||||
all: function (path, handler) {
|
||||
this.registered['all-' + path] = handler;
|
||||
}
|
||||
};
|
||||
|
||||
describe('requestor', () => {
|
||||
it('should detect all requests on root', () => {
|
||||
requestor(mock, './test/onroot', {});
|
||||
expect(mock.registered).to.have.all.keys(['post-/', 'get-/', 'put-/', 'delete-/', 'all-/']);
|
||||
});
|
||||
});
|
3
test/onroot/all-root.js
Normal file
3
test/onroot/all-root.js
Normal file
@ -0,0 +1,3 @@
|
||||
module.exports = (req, res, next, opts) => {
|
||||
// dummy endpoint: do nothing
|
||||
};
|
3
test/onroot/delete-root.js
Normal file
3
test/onroot/delete-root.js
Normal file
@ -0,0 +1,3 @@
|
||||
module.exports = (req, res, next, opts) => {
|
||||
// dummy endpoint: do nothing
|
||||
};
|
3
test/onroot/get-root.js
Normal file
3
test/onroot/get-root.js
Normal file
@ -0,0 +1,3 @@
|
||||
module.exports = (req, res, next, opts) => {
|
||||
// dummy endpoint: do nothing
|
||||
};
|
3
test/onroot/not-root.js
Normal file
3
test/onroot/not-root.js
Normal file
@ -0,0 +1,3 @@
|
||||
module.exports = (req, res, next, opts) => {
|
||||
// dummy endpoint: do nothing
|
||||
};
|
3
test/onroot/post-root.js
Normal file
3
test/onroot/post-root.js
Normal file
@ -0,0 +1,3 @@
|
||||
module.exports = (req, res, next, opts) => {
|
||||
// dummy endpoint: do nothing
|
||||
};
|
3
test/onroot/put-root.js
Normal file
3
test/onroot/put-root.js
Normal file
@ -0,0 +1,3 @@
|
||||
module.exports = (req, res, next, opts) => {
|
||||
// dummy endpoint: do nothing
|
||||
};
|
Reference in New Issue
Block a user