Skip to content

Commit

Permalink
Merge pull request #51 from express-promise-router/default-export
Browse files Browse the repository at this point in the history
Default Export
  • Loading branch information
mormahr committed Apr 8, 2018
2 parents 2f5df7b + fd9ad74 commit 3de1dd8
Show file tree
Hide file tree
Showing 15 changed files with 420 additions and 34 deletions.
1 change: 1 addition & 0 deletions lib/express-promise-router.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,4 +110,5 @@ var PromiseRouter = function(path) {
return me;
};

PromiseRouter.default = PromiseRouter;
module.exports = PromiseRouter;
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
},
"devDependencies": {
"@types/express": "^4.11.0",
"babel-core": "^6.26.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
"chai": "^4.0.0",
"eslint": "^4.0.0",
"express": "4.x",
Expand Down
35 changes: 35 additions & 0 deletions test/babel.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
'use strict';

var resolve = require('path').resolve;
var assert = require('chai').assert;
var spawnBabel = require('./util/launch-utils').spawnBabel;
var GET = require('./util/http-utils').GET;

describe('Babel', function() {
it('should run the example and respond', function(done) {
this.timeout(5000);
var js_file = resolve(__dirname, './test-resources/babel-base-case.js');
var target = spawnBabel(js_file);
var called = false;

target.stdout.on('data', function(data) {
if (data.toString().indexOf('START') === -1) {
return;
}

GET('/').then(function() {
called = true;
target.kill('SIGINT');
});
});

target.stderr.on('data', function(data) {
console.error(data.toString());
});

target.on('close', function() {
assert(called);
done();
});
});
});
35 changes: 35 additions & 0 deletions test/commonjs.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
'use strict';

var resolve = require('path').resolve;
var assert = require('chai').assert;
var spawnJavaScript = require('./util/launch-utils').spawnJavaScript;
var GET = require('./util/http-utils').GET;

describe('CommonJs', function() {
it('should run the example and respond', function(done) {
this.timeout(5000);
var js_file = resolve(__dirname, './test-resources/commonjs-base-case.js');
var target = spawnJavaScript(js_file);
var called = false;

target.stdout.on('data', function(data) {
if (data.toString().indexOf('START') === -1) {
return;
}

GET('/').then(function() {
called = true;
target.kill('SIGINT');
});
});

target.stderr.on('data', function(data) {
console.error(data.toString());
});

target.on('close', function() {
assert(called);
done();
});
});
});
11 changes: 1 addition & 10 deletions test/express-promise-router.route.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
var assert = require('chai').assert;
var sinon = require('sinon');
var express = require('express');
var request = require('request-promise');
var GET = require('./util/http-utils').GET;

var delay = function(method, payload) {
setTimeout(function() {
Expand All @@ -19,15 +19,6 @@ describe('new Router().route(...)', function() {
var server;
var router;

var GET = function(route) {
return request({ url: 'http://localhost:12345' + route, resolveWithFullResponse: true }).then(function(res) {
// Express sends 500 errors for uncaught exceptions (like failed assertions)
// Make sure to still fail the test if an assertion in middleware failed.
assert.equal(res.statusCode, 200);
return res;
});
};

var bootstrap = function(router) {
app = express();
app.use('/', router);
Expand Down
11 changes: 1 addition & 10 deletions test/express-promise-router.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
var assert = require('chai').assert;
var sinon = require('sinon');
var express = require('express');
var request = require('request-promise');
var GET = require('./util/http-utils').GET;

var delay = function(method, payload) {
setTimeout(function() {
Expand All @@ -19,15 +19,6 @@ describe('express-promise-router', function() {
var server;
var router;

var GET = function(route) {
return request({ url: 'http://localhost:12345' + route, resolveWithFullResponse: true }).then(function(res) {
// Express sends 500 errors for uncaught exceptions (like failed assertions)
// Make sure to still fail the test if an assertion in middleware failed.
assert.equal(res.statusCode, 200);
return res;
});
};

var bootstrap = function(router) {
app = express();
app.use('/', router);
Expand Down
6 changes: 6 additions & 0 deletions test/test-resources/.eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parserOptions": {
"ecmaVersion": 2015,
"sourceType": "module"
}
}
12 changes: 12 additions & 0 deletions test/test-resources/babel-base-case.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import express from 'express';
import Router from '../../lib/express-promise-router.js';
const router = Router();

router.get('/', function(req, res) {
res.send('Hi!');
});

const app = express();
app.use(router);
app.listen(12345);
console.log('START');
12 changes: 12 additions & 0 deletions test/test-resources/commonjs-base-case.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
var express = require('express');
var Router = require('../../lib/express-promise-router.js');
var router = Router();

router.get('/', function(req, res) {
res.send('Hi!');
});

var app = express();
app.use(router);
app.listen(12345);
console.log('START');
13 changes: 13 additions & 0 deletions test/test-resources/typescript-base-case.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/// <reference path="../../index.d.ts"/>
import * as express from 'express';
import Router from '../../lib/express-promise-router.js';
const router = Router();

router.get('/', function(req, res) {
res.send('Hi!');
});

const app = express();
app.use(router);
app.listen(12345);
console.log('START');
7 changes: 0 additions & 7 deletions test/typescript-resources/base-case.ts

This file was deleted.

33 changes: 32 additions & 1 deletion test/typescript.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,41 @@

var tt = require('typescript-definition-tester');
var path = require('path');
var resolve = require('path').resolve;
var assert = require('chai').assert;
var spawnTypeScript = require('./util/launch-utils').spawnTypeScript;
var GET = require('./util/http-utils').GET;

describe('TypeScript', function() {
it('should compile base-case successfully against index.d.ts', function(done) {
this.timeout(20000);
tt.compile([path.resolve(__dirname + '/typescript-resources/base-case.ts')], {}, done.bind(null));
tt.compile([path.resolve(__dirname + '/typescript-resources/typescript-base-case.ts')], {}, done.bind(null));
});

it('should run the example and respond', function(done) {
this.timeout(5000);
var ts_file = resolve(__dirname, './test-resources/typescript-base-case.ts');
var target = spawnTypeScript(ts_file);
var called = false;

target.stdout.on('data', function(data) {
if (data.toString().indexOf('START') === -1) {
return;
}

GET('/').then(function() {
called = true;
target.kill('SIGINT');
});
});

target.stderr.on('data', function(data) {
console.error(data.toString());
});

target.on('close', function() {
assert(called);
done();
});
});
});
11 changes: 11 additions & 0 deletions test/util/http-utils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
var request = require('request-promise');
var assert = require('chai').assert;

exports.GET = function(route) {
return request({ url: 'http://localhost:12345' + route, resolveWithFullResponse: true }).then(function(res) {
// Express sends 500 errors for uncaught exceptions (like failed assertions)
// Make sure to still fail the test if an assertion in middleware failed.
assert.equal(res.statusCode, 200);
return res;
});
};
40 changes: 40 additions & 0 deletions test/util/launch-utils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
var ts = require('typescript');
var babel = require('babel-core');
var fs = require('fs');
var spawn = require('child_process').spawn;
var dirname = require('path').dirname;

function spawnString(source, dir) {
return spawn('node', ['-e', source], {
cwd: dir,
});
}

// path has to be fully qualified
exports.spawnTypeScript = function spawnTypeScript(path) {
var content = fs.readFileSync(path, 'utf-8');

var compilerOptions = {
module: ts.ModuleKind.CommonJS,
};

var transpiled = ts.transpile(content, compilerOptions);

return spawnString(transpiled, dirname(path));
};

exports.spawnJavaScript = function spawnJavaScript(path) {
var content = fs.readFileSync(path, 'utf-8');

return spawnString(content, dirname(path));
};

exports.spawnBabel = function spawnBabel(path) {
var content = fs.readFileSync(path, 'utf-8');

var result = babel.transform(content, {
plugins: ['transform-es2015-modules-commonjs'],
});

return spawnString(result.code, dirname(path));
};

0 comments on commit 3de1dd8

Please sign in to comment.