mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
Ensure that we can add res.marko to multiple express instances, but it will not be applied multiple times to the same express instance.
This commit is contained in:
parent
5b37ff54cd
commit
67521efbab
@ -28,3 +28,5 @@ response.marko = response.marko || function(template, data) {
|
||||
|
||||
template.render(data, res);
|
||||
};
|
||||
|
||||
delete require.cache[__filename];
|
||||
|
||||
@ -10,17 +10,51 @@ var express = require('express');
|
||||
var request = require('request');
|
||||
var fs = require('fs');
|
||||
|
||||
var markoExpressPath = require.resolve('../express');
|
||||
|
||||
require('../node-require').install();
|
||||
|
||||
describe('render', function() {
|
||||
describe('express', function() {
|
||||
var autoTestDir = path.join(__dirname, 'autotests/express');
|
||||
|
||||
describe('registration', function() {
|
||||
it('should not register the res.marko function multiple times', function() {
|
||||
require(markoExpressPath);
|
||||
|
||||
var fn = express.response.marko;
|
||||
|
||||
require(markoExpressPath);
|
||||
|
||||
chai.expect(express.response.marko).to.equal(fn);
|
||||
});
|
||||
it('should be able to register for multiple express instances', function() {
|
||||
// test res.marko is added to the real express response
|
||||
require(markoExpressPath);
|
||||
chai.expect(express.response.marko).to.be.a('function');
|
||||
|
||||
// set up an express mock object and hijack require
|
||||
var expressMock = { response:{} };
|
||||
var _require = module.require;
|
||||
|
||||
module.require = function() {
|
||||
if(arguments[0] === 'express') return expressMock;
|
||||
return _require.apply(module, arguments);
|
||||
};
|
||||
|
||||
// check that res.marko is added to the mocked express response
|
||||
require(markoExpressPath);
|
||||
chai.expect(expressMock.response.marko).to.be.a('function');
|
||||
|
||||
// return require to its original state
|
||||
module.require = _require;
|
||||
});
|
||||
})
|
||||
|
||||
autotest.scanDir(
|
||||
autoTestDir,
|
||||
function run(dir, helpers, done) {
|
||||
var mainPath = path.join(dir, 'test.js');
|
||||
var templatePath = path.join(dir, 'template.marko');
|
||||
var markoExpressPath = require.resolve('../express');
|
||||
|
||||
var main = fs.existsSync(mainPath) ? require(mainPath) : {};
|
||||
var loadOptions = main && main.loadOptions;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user