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 fs = require('fs');
|
||||||
const path = require('path');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load all request handlers in the given folder
|
* Load all request handlers in the given folder
|
||||||
*
|
*
|
||||||
* @param {any} express app
|
* @param {any} app express app
|
||||||
* @param {string} modulefolder
|
* @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) {
|
module.exports = function (app, modulefolder, opts) {
|
||||||
for (const f of fs.readdirSync(modulefolder)) {
|
for (const f of fs.readdirSync(modulefolder)) {
|
||||||
const regex = /(.*?)-(.*?)\.js/;
|
const regex = /(.*?)-(.*?)\.js/;
|
||||||
let [, method, url] = regex.exec(f);
|
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) => {
|
const func = (req, res, next) => {
|
||||||
handler(req, res, next, opts);
|
handler(req, res, next, opts);
|
||||||
};
|
};
|
||||||
|
|
||||||
switch (method) {
|
switch (method) {
|
||||||
case 'post':
|
case 'post':
|
||||||
app.post(path, func);
|
app.post(url, func);
|
||||||
break;
|
break;
|
||||||
case 'get':
|
case 'get':
|
||||||
app.get(path, func);
|
app.get(url, func);
|
||||||
break;
|
break;
|
||||||
case 'put':
|
case 'put':
|
||||||
app.put(path, func);
|
app.put(url, func);
|
||||||
break;
|
break;
|
||||||
case 'delete':
|
case 'delete':
|
||||||
app.delete(path, func);
|
app.delete(url, func);
|
||||||
break;
|
break;
|
||||||
case 'all':
|
case 'all':
|
||||||
app.all(path, func);
|
app.all(url, func);
|
||||||
break;
|
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