UNPKG

3.21 kBJavaScriptView Raw
1'use strict';
2
3var request = require('supertest');
4var assert = require('assert');
5var express = require('express');
6var hbs = require('..');
7
8describe('multiple directories', function() {
9 var app;
10
11 beforeEach(function() {
12 app = express();
13 app.engine('hbs', hbs.express3());
14 app.set('view engine', 'hbs');
15 app.get('/test1', function (req, res) {
16 res.render('test1');
17 });
18 app.get('/test2', function (req, res) {
19 res.render('test2');
20 });
21 app.get('/collide', function (req, res) {
22 res.render('collide');
23 });
24 app.get('/error', function (req, res) {
25 res.render('error');
26 });
27 });
28
29 it('should handle single folder', function(done) {
30 app.set('views', './test/views/multiple/views1');
31 request(app)
32 .get('/test1')
33 .end(function (err, res) {
34 assert.ifError(err);
35 var expected = '<h1>test1</h1>\n';
36 assert.equal(res.text, expected);
37 done();
38 });
39 });
40
41 it('should handle multiple folders', function(done) {
42 app.set('views', ['./test/views/multiple/views1', './test/views/multiple/views2']);
43 request(app)
44 .get('/test2')
45 .end(function (err, res) {
46 assert.ifError(err);
47 var expected = '<h1>test2</h1>\n';
48 assert.equal(res.text, expected);
49 done();
50 });
51 });
52
53 describe('should handle multiple folders in specific order', function() {
54
55 it('views1, views2', function(done) {
56 app.set('views', ['./test/views/multiple/views1', './test/views/multiple/views2']);
57 request(app)
58 .get('/collide')
59 .end(function (err, res) {
60 assert.ifError(err);
61 var expected = '<h1>collide1</h1>\n';
62 assert.equal(res.text, expected);
63 done();
64 });
65 });
66
67 it('views2, views1', function(done) {
68 app.set('views', ['./test/views/multiple/views2', './test/views/multiple/views1']);
69 request(app)
70 .get('/collide')
71 .end(function (err, res) {
72 assert.ifError(err);
73 var expected = '<h1>collide2</h1>\n';
74 assert.equal(res.text, expected);
75 done();
76 });
77 });
78
79 });
80
81 /* eslint-disable no-unused-vars */
82 describe('should report the filename in error', function() {
83
84 it('should report from first folder', function(done) {
85 app.set('views', ['./test/views/multiple/views1', './test/views/multiple/views2']);
86 app.use(function(err, req, res, next) {
87 res.status(500).send(err.stack);
88 });
89
90 request(app)
91 .get('/error')
92 .end(function(err, res) {
93 assert.ifError(err);
94 assert(res.error.text.indexOf('views1/error.hbs]') > 0);
95 done();
96 });
97 });
98
99
100 it('should report from second folder', function(done) {
101 app.set('views', ['./test/views/multiple/views2', './test/views/multiple/views1']);
102 app.use(function(err, req, res, next) {
103 res.status(500).send(err.stack);
104 });
105
106 request(app)
107 .get('/error')
108 .end(function(err, res) {
109 assert.ifError(err);
110 assert(res.error.text.indexOf('views2/error.hbs]') > 0);
111 done();
112 });
113 });
114 });
115 /* eslint-enable no-unused-vars */
116
117});