diff --git a/index.js b/index.js index af6942f..9cdd0b4 100644 --- a/index.js +++ b/index.js @@ -320,6 +320,9 @@ class HandlebarsRenderer { try { result = template(context); } catch(e) { + if (e instanceof ValidationError) { + return reject(new ValidationError(`${e.message} : ${e.stack}`)); + } return reject(new RenderError(`${e.message} : ${e.stack}`)); } @@ -372,6 +375,9 @@ class HandlebarsRenderer { try { result = template(context); } catch(e) { + if (e instanceof ValidationError) { + return reject(new ValidationError(`${e.message} : ${e.stack}`)); + } return reject(new RenderError(`${e.message} : ${e.stack}`)); } diff --git a/spec/index.js b/spec/index.js index f11935c..2e947db 100644 --- a/spec/index.js +++ b/spec/index.js @@ -233,6 +233,7 @@ describe('render', () => { 'capitalize_foo': '{{capitalize bar}}', 'with_locale': '{{locale_name}}', 'with_template': '{{template}}', + 'assign_var_too_long': '{{assignVar "foo" longString}}', }; const context = { bar: 'baz' @@ -325,6 +326,16 @@ describe('render', () => { done(); }); }); + + it('throws ValidationError (not RenderError) if a helper rejects its input, formatted like RenderError', done => { + renderer.render('assign_var_too_long', { longString: 'a'.repeat(1024) }).catch(e => { + expect(e instanceof HandlebarsRenderer.errors.ValidationError).to.be.true(); + expect(e instanceof HandlebarsRenderer.errors.RenderError).to.be.false(); + expect(e.message).to.include('assignVar helper value must be less than 1024 characters'); + expect(e.message).to.include(' : '); + done(); + }); + }); }); describe('renderString', () => { @@ -378,6 +389,16 @@ describe('renderString', () => { done(); }); }); + + it('throws ValidationError (not RenderError) if a helper rejects its input, formatted like RenderError', done => { + renderer.renderString('{{assignVar "foo" longString}}', { longString: 'a'.repeat(1024) }).catch(e => { + expect(e instanceof HandlebarsRenderer.errors.ValidationError).to.be.true(); + expect(e instanceof HandlebarsRenderer.errors.RenderError).to.be.false(); + expect(e.message).to.include('assignVar helper value must be less than 1024 characters'); + expect(e.message).to.include(' : '); + done(); + }); + }); }); describe('errors', () => {