diff --git a/lib/view.js b/lib/view.js index dce23b4..c59dbb4 100644 --- a/lib/view.js +++ b/lib/view.js @@ -83,9 +83,13 @@ ViewEngine.prototype.respond = function(view, opts) { opts = opts || {}; return q.when(viewEngine.render(view, opts), function(str) { + var headers = _.extend({}, { + 'content-type': 'text/html', + 'content-length': Buffer.byteLength(str, 'utf-8') + }, opts.headers); return { status: opts.status || 200, - headers: opts.headers || { 'content-type': 'text/html', 'content-length': Buffer.byteLength(str, 'utf-8') }, + headers: headers, body: [str] }; }); diff --git a/test/view.test.js b/test/view.test.js index fb778ff..f740de5 100644 --- a/test/view.test.js +++ b/test/view.test.js @@ -28,3 +28,25 @@ test('test render mustache with partials', function(t) { t.fail(err); }); }); + +test('test `bogart.respond` merges headers', function(t) { + var viewEngine = bogart.viewEngine('mustache', fixturesPath) + , headers = { abc: 123 } + , respondOpts = { + layout: false, + locals: { greeting: {} }, + headers: headers + }; + + when(viewEngine.respond('partial-test.mustache', respondOpts), function(response) { + t.equals(response.headers.abc, headers.abc); + t.equals(response.headers['content-type'], 'text/html'); + + t.end(); + }, function(err) { + t.fail(err); + t.end(); + }); + + t.plan(2); +}); \ No newline at end of file