Skip to content

Commit

Permalink
refactoring: printInput helper + UT
Browse files Browse the repository at this point in the history
  • Loading branch information
wonknu committed Dec 2, 2016
1 parent 57a4d2c commit 1f01ad2
Show file tree
Hide file tree
Showing 9 changed files with 720 additions and 291 deletions.
2 changes: 1 addition & 1 deletion src/cli/cms/editor/handlebars/printBlock.js
@@ -1,4 +1,4 @@
import printInput from './printInput'
import {printInput} from './printInput'
import abeEngine from './abeEngine'

import {
Expand Down
402 changes: 183 additions & 219 deletions src/cli/cms/editor/handlebars/printInput.js

Large diffs are not rendered by default.

26 changes: 23 additions & 3 deletions src/cli/cms/editor/index.js
Expand Up @@ -10,13 +10,24 @@ import folders from './handlebars/folders'
import listPage from './handlebars/listPage'
import printBlock from './handlebars/printBlock'
import printConfig from './handlebars/printConfig'
import printInput from './handlebars/printInput'
import recursiveFolder from './handlebars/recursiveFolder'
import recursivePrintConfig from './handlebars/recursivePrintConfig'
import sourceAttr from './handlebars/sourceAttr'
import sourceAutocomplete from './handlebars/sourceAutocomplete'
import sourceOption from './handlebars/sourceOption'
import raw from './handlebars/raw'
import {
printInput,
getAttributes,
getLabel,
createInputSource,
createInputRich,
createInputFile,
createInputTextarea,
createInputLink,
createInputImage,
createInputText
} from './handlebars/printInput'

Handlebars.registerHelper('abeImport', abeImport)
Handlebars.registerHelper('abe', compileAbe)
Expand All @@ -38,12 +49,21 @@ export {
listPage,
printBlock,
printConfig,
printInput,
recursiveFolder,
recursivePrintConfig,
sourceAttr,
sourceAutocomplete,
sourceOption,
raw
raw,
printInput,
getAttributes,
getLabel,
createInputSource,
createInputRich,
createInputFile,
createInputTextarea,
createInputLink,
createInputImage,
createInputText
}

2 changes: 1 addition & 1 deletion src/tasks/nodemon.js
Expand Up @@ -19,7 +19,7 @@ nodemon({
'NODE_ENV': 'development'
},
ignore: [
'docs/*'
// 'docs/*'
],
watch: [
'src/cli/*',
Expand Down
20 changes: 20 additions & 0 deletions test/cms/editor/handlebars/folders.js
@@ -0,0 +1,20 @@
import chai from 'chai'
import path from 'path'
import {
cmsEditor,
config
} from '../../../../src/cli'
config.set({root: path.join(process.cwd(), 'test', 'fixtures')})

describe('cmsEditor.folders', function() {

/**
* cmsEditor.folders
*/
it('cmsEditor.folders()', function() {
var result = cmsEditor.folders([{path: ''}], 1, null, {'level-1': 'my wording'})
var wordingExist = result.indexOf('my wording')
chai.expect(result).to.be.a('string')
chai.expect(wordingExist).to.equal(110)
});
});
169 changes: 169 additions & 0 deletions test/cms/editor/handlebars/printInput.js
@@ -0,0 +1,169 @@
import chai from 'chai'
import path from 'path'
import sinonChai from'sinon-chai'
chai.use(sinonChai)
import sinon from 'sinon'

import {
cmsEditor,
abeExtend,
config
} from '../../../../src/cli'
config.set({root: path.join(process.cwd(), 'test', 'fixtures')})

import data from '../../../fixtures/editor/index'

var classAttr = 'form-control form-abe'

describe('printInput', function() {

// getAttributes,
// getLabel,
// createInputSource,
// createInputRich,
// createInputFile,
// createInputTextarea,
// createInputLink,
// createInputImage,
// createInputText

/**
* cmsEditor.getLabel
*
*/
it('cmsEditor.getLabel()', function() {
var result = cmsEditor.getLabel(data.label)
chai.expect(result).to.be.a('string')
var label = /<label(\r|\t|\n|.)*?<\/label>/.test(result)
chai.expect(label).to.be.true
})

/**
* cmsEditor.getAttributes
*
*/
it('cmsEditor.getAttributes()', function() {
var result = cmsEditor.getAttributes(data.attributes)
chai.expect(result).to.be.a('string')
chai.expect(result).to.be.equal('id="key" data-id="key" value="value" maxlength="max-length" data-maxlength="max-length" reload="reload" tabIndex="order" data-required="required" data-display="display" data-visible="visible" data-autocomplete="autocomplete" placeholder="placeholder" data-size="thumbs" multiple disabled')
})

/**
* cmsEditor.createInputSource
*
*/
it('cmsEditor.createInputSource()', function() {
var result0 = cmsEditor.createInputSource(data.source[0].attributes, classAttr, data.source[0].params)
var select = /<select(\r|\t|\n|.)*?<\/select>/.test(result0)
chai.expect(result0).to.be.a('string')
chai.expect(select).to.be.true

var result1 = cmsEditor.createInputSource(data.source[1].attributes, classAttr, data.source[1].params)
var test1 = result1.indexOf('multiple')
chai.expect(test1).to.be.above(-1)

var result2 = cmsEditor.createInputSource(data.source[2].attributes, classAttr, data.source[2].params)
var test2 = result2.indexOf('data-autocomplete')
chai.expect(test2).to.be.above(-1)

var result3 = cmsEditor.createInputSource(data.source[3].attributes, classAttr, data.source[3].params)
var test3 = result3.indexOf('{"id":1,"name":"test 1","lang":"de"}')
chai.expect(test3).to.be.above(-1)
})

/**
* cmsEditor.createInputRich
*
*/
it('cmsEditor.createInputRich()', function() {
var result = cmsEditor.createInputRich(data.rich.attributes, classAttr, data.rich.params)
chai.expect(result).to.be.a('string')
})

/**
* cmsEditor.createInputFile
*
*/
it('cmsEditor.createInputFile()', function() {
var result = cmsEditor.createInputFile(data.file.attributes, classAttr, data.file.params)
var input = /<input(\r|\t|\n|.)*?type=\"file\"(\r|\t|\n|.)*?>/.test(result)
chai.expect(result).to.be.a('string')
chai.expect(input).to.be.true
})

/**
* cmsEditor.createInputTextarea
*
*/
it('cmsEditor.createInputTextarea()', function() {
var result = cmsEditor.createInputTextarea(data.textarea.attributes, classAttr, data.textarea.params)
var textarea = /<textarea(\r|\t|\n|.)*?<\/textarea>/.test(result)
chai.expect(result).to.be.a('string')
chai.expect(textarea).to.be.true
})

/**
* cmsEditor.createInputLink
*
*/
it('cmsEditor.createInputLink()', function() {
var result = cmsEditor.createInputLink(data.link.attributes, classAttr, data.link.params)
var link = result.indexOf('glyphicon glyphicon-link')
chai.expect(result).to.be.a('string')
chai.expect(link).to.be.above(-1)
})

/**
* cmsEditor.createInputImage
*
*/
it('cmsEditor.createInputImage()', function() {
var result = cmsEditor.createInputImage(data.image.attributes, classAttr, data.image.params)
var image = result.indexOf('glyphicon glyphicon-picture')
chai.expect(result).to.be.a('string')
chai.expect(image).to.be.above(-1)
})

/**
* cmsEditor.createInputText
*
*/
it('cmsEditor.createInputText()', function() {
var result = cmsEditor.createInputText(data.txt.attributes, classAttr, data.txt.params)
var txt = result.indexOf('glyphicon glyphicon-font')
chai.expect(result).to.be.a('string')
chai.expect(txt).to.be.above(-1)
})

/**
* cmsEditor.printInput
*
*/
it('cmsEditor.printInput()', function() {
var val = data.text;
this.sinon = sinon.sandbox.create();
this.sinon.stub(abeExtend.hooks.instance, 'trigger', function(param, html){
return (param === 'beforeEditorInput') ? val : html;
})
var result = cmsEditor.printInput(val, {})
chai.expect(result).to.be.a('string')
var value = result.match(/value="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(value).to.equal('value="val2"')
var reload = result.match(/reload="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(reload).to.equal('reload="val3"')
var tabIndex = result.match(/tabIndex="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(tabIndex).to.equal('tabIndex="val4"')
var dataRequired = result.match(/data-required="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(dataRequired).to.equal('data-required="val5"')
var dataDisplay = result.match(/data-display="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(dataDisplay).to.equal('data-display="val6"')
var dataVisible = result.match(/data-visible="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(dataVisible).to.equal('data-visible="val7"')
var dataAutocomplete = result.match(/data-autocomplete="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(dataAutocomplete).to.equal('data-autocomplete="val8"')
var placeholder = result.match(/placeholder="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(placeholder).to.equal('placeholder="val9"')

this.sinon.restore()
});
});
62 changes: 0 additions & 62 deletions test/editor.js

This file was deleted.

0 comments on commit 1f01ad2

Please sign in to comment.