| Server IP : 68.183.124.220 / Your IP : 216.73.217.137 Web Server : Apache/2.4.18 (Ubuntu) System : Linux Sandbox-A 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : gavin ( 1000) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/gavin/workspace/readjs/node_modules/express-hbs/test/ |
Upload File : |
var request = require('supertest');
var path = require('path');
var rewire = require('rewire');
var assert = require('assert');
var fs = require('fs');
/**
* Creates instance of example app using an injected version of express-hbs to track the number of times a
* file is read. Additionally, the $NODE_ENV environment variable may be set.
*
* @param env
* @returns {{app: hbs, readCounts: {}}}
*/
function createApp(env) {
var readCounts = {};
var hbs = rewire('../lib/hbs');
hbs.__set__('fs', {
readFileSync: function(filename, encoding) {
if (typeof readCounts[filename] === 'undefined') {
readCounts[filename] = 1;
} else {
readCounts[filename] += 1;
}
return fs.readFileSync(filename, encoding);
},
readFile: function(filename, encoding, cb) {
if (typeof readCounts[filename] === 'undefined') {
readCounts[filename] = 1;
} else {
readCounts[filename] += 1;
}
fs.readFile(filename, encoding, cb);
},
existsSync: function(filename, encoding) {
return fs.existsSync(filename, encoding);
}
});
// used mocked hbs in example
var example = require('../example/app');
var app = example.create(hbs, env);
return {app: app, readCounts: readCounts};
}
describe('express-hbs', function() {
describe('cache', function() {
it('should not cache layout in `development`', function(done) {
var mock = createApp('development');
request(mock.app)
.get('/')
.end(function(err) {
assert.ifError(err);
request(mock.app)
.get('/')
.expect(/DEFAULT LAYOUT/)
.end(function(err) {
assert.ifError(err);
var filename = path.resolve(__dirname, '../example/views/layout/default.hbs');
assert.equal(mock.readCounts[filename], 2);
done();
});
});
});
it('should cache layout in `production` reading file once', function(done) {
var mock = createApp('production');
// reads layout from fs once
request(mock.app)
.get('/')
.end(function(err) {
assert.ifError(err);
request(mock.app)
.get('/')
.expect(/DEFAULT LAYOUT/)
.end(function(err, res) {
assert.ifError(err);
var filename = path.resolve(__dirname, '../example/views/layout/default.hbs');
assert.equal(mock.readCounts[filename], 1);
done();
});
});
});
it('should not cache partials in `development`', function(done) {
var mock = createApp('development');
request(mock.app)
.get('/veggies')
.expect(/just a comment/)
.end(function(err) {
assert.ifError(err);
request(mock.app)
.get('/veggies')
.expect(/just a comment/)
.end(function(err) {
assert.ifError(err);
var filename = path.resolve(__dirname, '../example/views/partials/sub/comment.hbs');
assert.equal(mock.readCounts[filename], 2);
done();
});
});
});
it('should cache partials in `production', function (done) {
var mock = createApp('production');
request(mock.app)
.get('/veggies')
.expect(/just a comment/)
.end(function(err) {
assert.ifError(err);
request(mock.app)
.get('/veggies')
.expect(/just a comment/)
.end(function(err) {
assert.ifError(err);
var filename = path.resolve(__dirname, '../example/views/partials/sub/comment.hbs');
assert.equal(mock.readCounts[filename], 1);
done();
});
});
});
});
});