Ghost/test/unit/helpers/raw_spec.js
Hannah Wolfe bf0823c9a2 Moved hbs engine into new theme engine service
- This is the beginning of splitting up the theme service into:
   - Storage components used by the API (should be a server service)
   - Theme engine & rendering components used by the frontend (this new engine service)
   - The code to activate a theme which is shared code where the API & frontend need to communicate
- This is needed because currently the frontend theme service is required and used by the API, creating tight coupling.
- In my quest to truly separate the API and frontend, this is one of many battles that needs winning
2021-04-19 20:03:30 +01:00

41 lines
1.1 KiB
JavaScript

const should = require('should');
const helpers = require('../../../core/frontend/helpers');
const handlebars = require('../../../core/frontend/services/theme-engine/engine').handlebars;
let defaultGlobals;
function compile(templateString) {
const template = handlebars.compile(templateString);
template.with = (locals = {}, globals) => {
globals = globals || defaultGlobals;
return template(locals, globals);
};
return template;
}
describe('{{raw}} helper', function () {
before(function () {
handlebars.registerHelper('raw', helpers.raw);
});
it('can correctly compile space', function () {
compile('{{{{raw}}}} {{{{/raw}}}}')
.with({})
.should.eql(' ');
});
it('can correctly ignore handlebars', function () {
compile('{{{{raw}}}}{{test}}{{{{/raw}}}}')
.with({tag: {}})
.should.eql('{{test}}');
});
it('can correctly compile recursive', function () {
compile('{{{{raw}}}}{{{{raw}}}}{{{{/raw}}}}{{{{/raw}}}}')
.with({tag: {}})
.should.eql('{{{{raw}}}}{{{{/raw}}}}');
});
});