Skip to content

Commit

Permalink
UT: template (stub/unstub)
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolaslabbe committed Nov 28, 2016
1 parent 083035c commit 81bc0cc
Show file tree
Hide file tree
Showing 13 changed files with 1,103 additions and 646 deletions.
36 changes: 19 additions & 17 deletions src/cli/cms/templates/template.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import {
config,
coreUtils,
cmsData,
abeExtend
abeExtend,
cmsTemplates
} from '../../'

export function getTemplatesAndPartials(templatesPath) {
Expand Down Expand Up @@ -54,24 +55,25 @@ export function getAbeImport(text) {
}

export function includePartials(text) {
var abeImports = getAbeImport(text)
var abeImports = cmsTemplates.template.getAbeImport(text)

Array.prototype.forEach.call(abeImports, (abeImport) => {
var obj = cmsData.attributes.getAll(abeImport, {})


var file = obj.file
var partial = ''
file = path.join(config.root, config.partials, file)
if(coreUtils.file.exist(file)) {
partial = includePartials(fse.readFileSync(file, 'utf8'))
partial = cmsTemplates.template.includePartials(fse.readFileSync(file, 'utf8'))
}
text = text.replace(cmsData.regex.escapeTextToRegex(abeImport, 'g'), partial)
})

return text
}

function translate(text) {
export function translate(text) {
var importReg = /({{abe.*type=[\'|\"]translate.*}})/g

var matches = text.match(importReg)
Expand Down Expand Up @@ -127,9 +129,9 @@ export function getTemplate (file) {
file = path.join(config.root, config.templates.url, file + '.' + config.files.templates.extension)
if(coreUtils.file.exist(file)) {
text = fse.readFileSync(file, 'utf8')
text = includePartials(text)
text = translate(text)
text = addOrder(text)
text = cmsTemplates.template.includePartials(text)
text = cmsTemplates.template.translate(text)
text = cmsTemplates.template.addOrder(text)
}else {
text = `[ ERROR ] template ${file + '.' + config.files.templates.extension} doesn't exist anymore`
}
Expand Down Expand Up @@ -187,13 +189,13 @@ export function recurseWhereVariables (where) {
var arRight
switch(where.operator) {
case 'AND':
arLeft = recurseWhereVariables(where.left)
arRight = recurseWhereVariables(where.right)
arLeft = cmsTemplates.template.recurseWhereVariables(where.left)
arRight = cmsTemplates.template.recurseWhereVariables(where.right)
return arLeft.concat(arRight)
break
case 'OR':
arLeft = recurseWhereVariables(where.left)
arRight = recurseWhereVariables(where.right)
arLeft = cmsTemplates.template.recurseWhereVariables(where.left)
arRight = cmsTemplates.template.recurseWhereVariables(where.right)
return arLeft.concat(arRight)
break
default:
Expand All @@ -209,7 +211,7 @@ export function getTemplatesTexts(templatesList) {
var p = new Promise((resolve) => {
Array.prototype.forEach.call(templatesList, (file) => {
var template = fse.readFileSync(file, 'utf8')
template = includePartials(template)
template = cmsTemplates.template.includePartials(template)
var name = file.replace(path.join(config.root, config.templates.url, path.sep), '').replace(`.${config.files.templates.extension}`, '')
templates.push({
name: name,
Expand Down Expand Up @@ -238,7 +240,7 @@ export function execRequestColumns(tpl) {
})
}
if(typeof request.where !== 'undefined' && request.where !== null) {
ar = ar.concat(recurseWhereVariables(request.where))
ar = ar.concat(cmsTemplates.template.recurseWhereVariables(request.where))
}
}
})
Expand All @@ -250,7 +252,7 @@ export function getAbeRequestWhereKeysFromTemplates(templatesList) {
var whereKeys = []
var p = new Promise((resolve) => {
Array.prototype.forEach.call(templatesList, (file) => {
whereKeys = whereKeys.concat(execRequestColumns(file.template))
whereKeys = whereKeys.concat(cmsTemplates.template.execRequestColumns(file.template))
})
whereKeys = whereKeys.filter(function (item, pos) {return whereKeys.indexOf(item) == pos})
resolve(whereKeys)
Expand All @@ -271,7 +273,7 @@ export function setAbeSlugDefaultValueIfDoesntExist(templateText) {
export function getAbeSlugFromTemplates(templatesList) {
var slugs = {}
Array.prototype.forEach.call(templatesList, (file) => {
var templateText = setAbeSlugDefaultValueIfDoesntExist(file.template)
var templateText = cmsTemplates.template.setAbeSlugDefaultValueIfDoesntExist(file.template)
var matchesSlug = cmsData.regex.getTagAbeWithType(templateText, 'slug')
var obj = cmsData.attributes.getAll(matchesSlug[0], {})
slugs[file.name] = obj.sourceString
Expand All @@ -295,7 +297,7 @@ export function getAbePrecontribFromTemplates(templatesList) {
var slugMatch = cmsData.regex.getTagAbeWithType(file.template, 'slug')
var templateText = file.template
if(slugMatch == null || slugMatch[0] == null) {
templateText = setAbePrecontribDefaultValueIfDoesntExist(file.template)
templateText = cmsTemplates.template.setAbePrecontribDefaultValueIfDoesntExist(file.template)
}

var matchesTabSlug = cmsData.regex.getTagAbeWithTab(templateText, 'slug')
Expand All @@ -307,7 +309,7 @@ export function getAbePrecontribFromTemplates(templatesList) {
})
})

precontributionTemplate = addOrder(precontributionTemplate)
precontributionTemplate = cmsTemplates.template.addOrder(precontributionTemplate)

return {
fields: fields,
Expand Down
46 changes: 46 additions & 0 deletions test/cms/templates/encodeAbeTagAsComment.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
var chai = require('chai');
var sinonChai = require('sinon-chai')
var expect = chai.expect
chai.use(sinonChai)
var sinon = require('sinon');
var path = require('path');
var fse = require('fs-extra');

var config = require('../../../src/cli').config
config.set({root: path.join(process.cwd(), 'test', 'fixtures')})

var cmsTemplates = require('../../../src/cli').cmsTemplates;
var cmsData = require('../../../src/cli').cmsData;
var Manager = require('../../../src/cli').Manager;

describe('cmsTemplates', function() {
before( function(done) {
Manager.instance.init()
.then(function () {
this.fixture = {
articleEach: fse.readFileSync(path.join(process.cwd(), 'test', 'fixtures', 'templates', 'article-each-abe.html'), 'utf-8')
}
done()

}.bind(this))
});

/**
* cmsTemplates.encodeAbeTagAsComment
*
*/
it('cmsTemplates.encodeAbeTagAsComment()', function() {
// stub
var sinonInstance = sinon.sandbox.create();
var validDataAbe = sinonInstance.stub(cmsData.regex, 'validDataAbe');
validDataAbe.returns('')

// test
var txt = cmsTemplates.encodeAbeTagAsComment(this.fixture.articleEach);
chai.expect(txt.indexOf('{')).to.equal(-1);

// unstub
sinon.assert.calledOnce(cmsData.regex.validDataAbe)
cmsData.regex.validDataAbe.restore()
});
});
38 changes: 38 additions & 0 deletions test/cms/templates/handlebars/isAuthorized.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
var chai = require('chai');
var sinonChai = require('sinon-chai')
var expect = chai.expect
chai.use(sinonChai)
var sinon = require('sinon');
var fs = require('fs-extra');
var mkdirp = require('mkdirp');
var path = require('path');
var bcrypt = require('bcrypt-nodejs');
var Cookies = require('cookies');
var jwt = require('jwt-simple');
var Handlebars =require('../../../../src/cli').Handlebars

var coreUtils = require('../../../../src/cli').coreUtils
var config = require('../../../../src/cli').config
config.set({root: path.join(process.cwd(), 'test', 'fixtures')})

var User = require('../../../../src/cli').User;
describe('Handlebars.helpers.isAuthorized', function() {
before( function() {
config.users.enable = true
this.fixture = {
htmlIsAuthorized: fs.readFileSync(path.join(process.cwd(), 'test', 'fixtures', 'templates', 'isAuthorized.html'), 'utf8'),
htmlIsAuthorizedTrue: fs.readFileSync(path.join(process.cwd(), 'test', 'fixtures', 'templates', 'isAuthorizedTrue.html'), 'utf8'),
users: JSON.parse(fs.readFileSync(path.join(process.cwd(), 'test', 'fixtures', 'users', 'users.json'), 'utf8'))
}
});

it('Handlebars.helpers.isAuthorized', function() {
var template = Handlebars.compile(this.fixture.htmlIsAuthorized)
var resHtml = template({})
chai.expect(resHtml).to.be.equal("");

template = Handlebars.compile(this.fixture.htmlIsAuthorizedTrue)
resHtml = template({})
chai.expect(resHtml).to.not.be.equal("");
});
});
22 changes: 22 additions & 0 deletions test/cms/templates/insertDebugtoolUtilities.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
var chai = require('chai');
var sinonChai = require('sinon-chai')
var expect = chai.expect
chai.use(sinonChai)
var sinon = require('sinon');
var path = require('path');

var config = require('../../../src/cli').config
config.set({root: path.join(process.cwd(), 'test', 'fixtures')})

var cmsTemplates = require('../../../src/cli').cmsTemplates;

describe('cmsTemplates', function() {
/**
* cmsTemplates.insertDebugtoolUtilities
*
*/
it('cmsTemplates.insertDebugtoolUtilities()', function() {
var txt = cmsTemplates.insertDebugtoolUtilities('</body>', false);
chai.expect(txt.length).to.above(10);
});
});
Loading

0 comments on commit 81bc0cc

Please sign in to comment.