ee-templates
Advanced tools
Comparing version 0.3.12 to 0.3.13
@@ -25,23 +25,24 @@ "use strict"; | ||
application: { | ||
json: new rendering.JSONRenderer() | ||
, xml: new rendering.XMLRenderer('application', 'xml') | ||
, all: new rendering.DefaultRenderer('application', 'json') | ||
json : new rendering.JSONRenderer() | ||
, xml : new rendering.XMLRenderer('application', 'xml') | ||
, all : new rendering.DefaultRenderer('application', 'json') | ||
} | ||
, image: { | ||
png: new rendering.DefaultRenderer('image', 'png') | ||
, jpg: new rendering.DefaultRenderer('image', 'jpg') | ||
, jpeg: new rendering.DefaultRenderer('image', 'jpeg') | ||
, webp: new rendering.DefaultRenderer('image', 'webp') | ||
, tiff: new rendering.DefaultRenderer('image', 'tiff') | ||
, all: new rendering.DefaultRenderer('image', '*') | ||
png : new rendering.DefaultRenderer('image', 'png') | ||
, jpg : new rendering.DefaultRenderer('image', 'jpg') | ||
, jpeg : new rendering.DefaultRenderer('image', 'jpeg') | ||
, webp : new rendering.DefaultRenderer('image', 'webp') | ||
, tiff : new rendering.DefaultRenderer('image', 'tiff') | ||
, all : new rendering.DefaultRenderer('image', '*') | ||
} | ||
, text: { | ||
plain: new rendering.DefaultRenderer('text', 'plain') | ||
, xml: new rendering.XMLRenderer() | ||
, html: new rendering.HTMLRenderer(this.container, this.dataPropertyName) | ||
, all: new rendering.DefaultRenderer('text', '*') | ||
plain : new rendering.DefaultRenderer('text', 'plain') | ||
, xml : new rendering.XMLRenderer() | ||
, csv : new rendering.CSVRenderer() | ||
, html : new rendering.HTMLRenderer(this.container, this.dataPropertyName) | ||
, all : new rendering.DefaultRenderer('text', '*') | ||
} | ||
, all: { | ||
all: new rendering.DefaultRenderer('*', '*') | ||
all : new rendering.DefaultRenderer('*', '*') | ||
} | ||
@@ -48,0 +49,0 @@ }; |
@@ -24,4 +24,4 @@ "use strict"; | ||
/** | ||
* todo: remove the try catch block as soon as we are sure the rendering does not throw errors anymore (nunjucks) | ||
* todo: try to find a better solution for the data assignment!! | ||
* @todo: remove the try catch block as soon as we are sure the rendering does not throw errors anymore (nunjucks) | ||
* @todo: try to find a better solution for the data assignment!! | ||
*/ | ||
@@ -28,0 +28,0 @@ , render: function(data, callback) { |
module.exports.AbstractRenderer = require('./AbstractRenderer'); | ||
module.exports.StringRenderer = require('./StringRenderer'); | ||
module.exports.DefaultRenderer = module.exports.StringRenderer | ||
module.exports.DefaultRenderer = module.exports.StringRenderer; | ||
@@ -9,3 +9,5 @@ module.exports.JSONRenderer = require('./JSONRenderer'); | ||
module.exports.XMLRenderer = require('./XMLRenderer'); | ||
module.exports.CSVRenderer = require('./CSVRenderer'); | ||
module.exports.Factory = require('./Factory'); |
@@ -18,8 +18,9 @@ "use strict"; | ||
, render: function (data, callback) { | ||
var rendered; | ||
try { | ||
var rendered = JSON.stringify(data.content); | ||
callback(null, rendered, this.type); | ||
rendered = JSON.stringify(data.content); | ||
} catch(e) { | ||
callback(e, null); | ||
return callback(e, null); | ||
} | ||
callback(null, rendered, this.type); | ||
} | ||
@@ -26,0 +27,0 @@ }; |
@@ -14,11 +14,14 @@ "use strict"; | ||
, render: function initialize(data, callback) { | ||
try { | ||
if(Types.string(data.content) || Types.buffer(data.content)) { | ||
return callback(null, data.content, this.type); | ||
var stringified; | ||
if(Types.string(data.content) || Types.buffer(data.content)) { | ||
stringified = data.content; | ||
} else { | ||
try { | ||
stringified = JSON.stringify(data.content); | ||
} catch(e) { | ||
return callback(e, null); | ||
} | ||
return callback(null, JSON.stringify(data.content), this.type); | ||
} catch(e) { | ||
callback(e, null); | ||
} | ||
callback(null, stringified, this.type); | ||
} | ||
@@ -25,0 +28,0 @@ }; |
@@ -22,12 +22,12 @@ "use strict"; | ||
if (Types.string(content)) { | ||
callback(null, content, this.type); | ||
return callback(null, content, this.type); | ||
} | ||
else { | ||
try { | ||
var parsed = js2xml('root', content, {useCDATA:true, wrapArray: {enabled: true}}); | ||
callback(null, parsed, this.type); | ||
} catch (err){ | ||
callback(err, null, this.type); | ||
} | ||
var parsed; | ||
try { | ||
parsed = js2xml('root', content, {useCDATA:true, wrapArray: {enabled: true}}); | ||
} catch (err){ | ||
return callback(err, null, this.type); | ||
} | ||
callback(null, parsed, this.type); | ||
} | ||
@@ -34,0 +34,0 @@ }; |
@@ -74,3 +74,4 @@ var log = require('ee-log'), | ||
* This is currently a hack! Nunjucks seems to trick us ou! | ||
* todo: simplify this interface! | ||
* @todo: simplify this interface! | ||
* | ||
* proposal: | ||
@@ -77,0 +78,0 @@ * |
{ | ||
"name" : "ee-templates" | ||
, "description" : "Templating integration for the ee-soa-transport-rest based on Nunjucks" | ||
, "version" : "0.3.12" | ||
, "version" : "0.3.13" | ||
, "license" : "MIT" | ||
@@ -6,0 +6,0 @@ , "author" : "Michael Rüfenacht <ruefe@rcky.ch> (http://www.rcky.ch)" |
@@ -26,2 +26,3 @@ var assert = require('assert') | ||
, acceptPlaintext = {'accept': [{key:'text', value: 'plain'}]} | ||
, acceptCSV = {'accept': [{key:'text', value: 'csv'}]} | ||
, acceptXML = {'accept': [{key:'text', value: 'xml'}]} | ||
@@ -180,9 +181,4 @@ , acceptAppXML = {'accept': [{key:'application', value: 'xml'}]} | ||
responseXML.render(200, 'it', {}, complexObject, function(err){ | ||
try { | ||
// I dont want to dick around with whitespaces | ||
assert.equal(expected, responseXML.data.replace(/\s*/g, '')); | ||
done(); | ||
} catch(ex) { | ||
done(ex); | ||
} | ||
assert.equal(expected, responseXML.data.replace(/\s*/g, '')); | ||
done(err); | ||
}); | ||
@@ -211,9 +207,4 @@ }); | ||
responseXML.render(200, 'it', {}, complexObject, function(err){ | ||
try { | ||
// I dont want to dick around with whitespaces | ||
assert.equal(expected, responseXML.data.replace(/\s*/g, '')); | ||
done(); | ||
} catch(ex) { | ||
done(ex); | ||
} | ||
assert.equal(expected, responseXML.data.replace(/\s*/g, '')); | ||
done(err); | ||
}); | ||
@@ -229,2 +220,81 @@ }); | ||
describe('text/csv', function(){ | ||
var requestCSV = new MockRequest('test.ch', '', acceptCSV) | ||
, responseCSV = new MockResponse(); | ||
middleware.request(requestCSV, responseCSV, function(){ | ||
it('should append a rendering method to the response', function(){ | ||
assert('render' in responseCSV); | ||
}); | ||
var expected = 'name,friends,age,sexy,bag\nJohn,"[""Chuck"",""Arnold""]",100,false,"{""full"":false}"\nBetty,"[""Jenna"",""Gina""]",20,true,"{""full"":true}"'; | ||
it('should fail if csv contains functions', function(done){ | ||
responseCSV.render(200, 'it', {}, complexObject, function(err){ | ||
assert(err); | ||
assert.equal(responseCSV.status, 500); | ||
responseCSV.isSent = false; | ||
done(); | ||
}); | ||
}); | ||
it('should fail if csv contains literals', function(done){ | ||
responseCSV.render(200, 'it', {}, [ null, 'one', 1, true, null ], function(err){ | ||
assert(err); | ||
assert.equal(responseCSV.status, 500); | ||
responseCSV.isSent = false; | ||
done(); | ||
}); | ||
}); | ||
it('should skip buffers', function(done){ | ||
responseCSV.render(200, 'it', {}, new Buffer('hello world'), function(err){ | ||
assert.equal(responseCSV.data, 'hello world'); | ||
assert.equal(200, responseCSV.status); | ||
responseCSV.isSent = false; | ||
done(err); | ||
}); | ||
}); | ||
it('should skip strings as well', function(done){ | ||
responseCSV.render(200, 'it', {}, 'hello world', function(err){ | ||
assert.equal(responseCSV.data, 'hello world'); | ||
assert.equal(200, responseCSV.status); | ||
responseCSV.isSent = false; | ||
done(err); | ||
}); | ||
}); | ||
it('should create csvs if possible', function(done){ | ||
responseCSV.render(200, 'it', {}, [ | ||
{ | ||
name : 'John' | ||
, friends : ['Chuck', 'Arnold'] | ||
, age : 100 | ||
, sexy : false | ||
, bag : { full: false } | ||
} | ||
, | ||
{ | ||
name : 'Betty' | ||
, friends : ['Jenna', 'Gina'] | ||
, age : 20 | ||
, sexy : true | ||
, bag : { full: true } | ||
} | ||
], function(err){ | ||
assert.equal(responseCSV.data, expected); | ||
assert.equal(200, responseCSV.status); | ||
responseCSV.isSent = false; | ||
done(err); | ||
}); | ||
}); | ||
it('and set the content type accordingly', function(){ | ||
assert.equal('text/csv; charset=utf-8', responseCSV.contentType); | ||
assert.equal(200, responseCSV.status); | ||
}); | ||
}); | ||
}); | ||
describe('on errors', function(){ | ||
@@ -231,0 +301,0 @@ var errorRequest = new MockRequest('test.ch', 'test.nunjuck.inexistent.html', acceptHTML) |
46180
24
964