From baee1b715fd680c7b8533c865d123fcacc7045a1 Mon Sep 17 00:00:00 2001 From: "jrafa1994@gmail.com" Date: Fri, 8 Jul 2022 15:59:07 -0600 Subject: [PATCH] globals "Functions" --- test/render-test.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/test/render-test.js b/test/render-test.js index d055523..15da794 100644 --- a/test/render-test.js +++ b/test/render-test.js @@ -227,6 +227,35 @@ describe('Mustache.render', function () { }); }); + describe('globals functions', function () { + it('the name of the function must be a string', function () { + assert.throws(function () { + Mustache.registerFunction(['wrong name'], function () {}); + }, TypeError, 'String expected on first argument to mustache.registerFunction'); + }); + + it('the function parameter must be a Function', function () { + assert.throws(function () { + Mustache.registerFunction('wrong name', ['wrong function']); + }, TypeError, 'Function expected on second argument to mustache.registerFunction'); + }); + + it('should register a function', function () { + Mustache.registerFunction('formatNumber', function (number) { + return Number(number).toLocaleString('en-US',{ maximumFractionDigits: 2 }); + }); + + assert.ok(Mustache.globalFunctions.hasOwnProperty('formatNumber')); + }); + + it('should render a template with a registered function', function () { + + var template = 'Nicaragua has formatted the number {{number}} to {{#formatNumber}}{{number}}{{/formatNumber}}'; + + assert.equal(Mustache.render(template, {number: 1500.6655}), 'Nicaragua has formatted the number 1500.6655 to 1,500.67'); + }); + }); + tests.forEach(function (test) { var view = eval(test.view);