// require parse5 now to avoid slowing down test
require('parse5')
var chalk = require('chalk')
var validate = require('../index')
var expect = require('chai').expect
describe('vue-template-validator', function () {
it('self-closing tag', function () {
var code =
'
\n' +
' \n' +
'
'
var warnings = validate(code)
expect(warnings.length).to.equal(1)
var msg = chalk.stripColor(warnings[0])
expect(msg).to.contain('Invalid self-closing tag: ')
expect(msg).to.contain('1 | ')
expect(msg).to.contain('2 | ')
expect(msg).to.contain(' | ^')
expect(msg).to.contain('3 |
')
code =
'\n' +
' \n' +
'
'
warnings = validate(code)
expect(warnings.length).to.equal(1)
msg = chalk.stripColor(warnings[0])
expect(msg).to.contain('Invalid self-closing tag: ')
expect(msg).to.contain('1 | ')
expect(msg).to.contain('2 | ')
expect(msg).to.contain(' | ^')
expect(msg).to.contain('3 |
')
})
it('camelCase tag', function () {
var code =
'\n' +
' \n' +
'
'
var warnings = validate(code)
expect(warnings.length).to.equal(1)
var msg = chalk.stripColor(warnings[0])
expect(msg).to.contain('Found camelCase tag: ')
expect(msg).to.contain('Use instead')
expect(msg).to.contain('1 | ')
expect(msg).to.contain('2 | ')
expect(msg).to.contain(' | ^')
expect(msg).to.contain('3 |
')
})
it('camelCase attr', function () {
var code =
'\n' +
'
'
var warnings = validate(code)
expect(warnings.length).to.equal(1)
var msg = chalk.stripColor(warnings[0])
expect(msg).to.contain('Found camelCase attribute: myProp="123"')
expect(msg).to.contain('Use my-prop="123" instead')
expect(msg).to.contain('1 | ')
expect(msg).to.contain('2 |
')
expect(msg).to.contain(' | ^')
})
it('multiple warnings', function () {
var code =
'\n' +
' \n' +
'
'
var warnings = validate(code)
expect(warnings.length).to.equal(3)
var msg
// 1
msg = chalk.stripColor(warnings[0])
expect(msg).to.contain('Invalid self-closing tag: ')
expect(msg).to.contain('1 | ')
expect(msg).to.contain('2 | ')
expect(msg).to.contain(' | ^')
expect(msg).to.contain('3 |
')
// 2
msg = chalk.stripColor(warnings[1])
expect(msg).to.contain('Found camelCase tag: ')
expect(msg).to.contain('Use instead')
expect(msg).to.contain('1 | ')
expect(msg).to.contain('2 | ')
expect(msg).to.contain(' | ^')
expect(msg).to.contain('3 |
')
// 3
var msg = chalk.stripColor(warnings[2])
expect(msg).to.contain('Found camelCase attribute: myProp="123"')
expect(msg).to.contain('Use my-prop="123" instead')
expect(msg).to.contain('1 | ')
expect(msg).to.contain('2 | ')
expect(msg).to.contain(' | ^')
expect(msg).to.contain('3 |
')
})
it('table', function () {
var warnings = validate('')
expect(warnings.length).to.equal(1)
var msg = chalk.stripColor(warnings[0])
expect(msg).to.contain('Tag cannot appear inside ')
expect(msg).to.contain('1 | ')
expect(msg).to.contain(' | ^')
})
it('svg valid tags', function() {
var code =
'\n' +
' \n' +
' \n' +
' '
var warnings = validate(code)
expect(warnings.length).to.equal(0)
var msg
// linearGradient
msg = chalk.stripColor(warnings[0])
expect(msg).to.not.exist
// clipPath
msg = chalk.stripColor(warnings[1])
expect(msg).to.not.exist
})
it('svg invalid tag', function() {
var code =
'\n' +
' \n' +
' '
var warnings = validate(code)
expect(warnings.length).to.equal(1)
var msg = chalk.stripColor(warnings[0])
expect(msg).to.contain('Found camelCase tag: ')
expect(msg).to.contain('Use instead')
expect(msg).to.contain('1 | ')
expect(msg).to.contain('2 | ')
expect(msg).to.contain(' | ^')
expect(msg).to.contain('3 | ')
})
it('svg camelCase attrs', function () {
var code = ' '
var warnings = validate(code)
expect(warnings.length).to.equal(0)
})
})