react-templates/test/src/rt-html-valid.unit.js

64 lines
2.1 KiB
JavaScript

'use strict'
const reactTemplates = require('../../src/reactTemplates')
const testUtils = require('./utils/testUtils')
const readFileNormalized = testUtils.readFileNormalized
const path = require('path')
const fsUtil = require('../../src/fsUtil')
const fs = require('fs')
const assert = require('assert')
const files = [
'scope.rt',
'scope-trailing-semicolon.rt',
'scope-variable-references.rt',
'lambda.rt',
'eval.rt',
'props.rt',
'custom-element.rt',
'style.rt',
'concat.rt',
'js-in-attr.rt',
'props-class.rt',
'rt-class.rt',
'className.rt',
'svg.rt',
'virtual.rt',
'scope-evaluated-after-repeat.rt',
'scope-evaluated-after-repeat2.rt',
'scope-evaluated-after-if.rt',
'scope-obj.rt',
'scope-reserved-tokens.rt',
'repeat-literal-collection.rt',
'include.rt'
]
describe('utils', () => {
describe('#convertText', () => {
it('should convert text successfully', () => {
const dataPath = path.resolve(__dirname, '..', 'data')
files.forEach(testFile => {
const filename = path.join(dataPath, testFile)
const options = {
readFileSync: fsUtil.createRelativeReadFileSync(filename),
modules: 'amd'
}
let actual = ''
let equal = false
try {
const html = fs.readFileSync(filename).toString()
const expected = testUtils.normalizeHtml(readFileNormalized(`${filename}.html`))
const code = reactTemplates.convertTemplateToReact(html, options).replace(/\r/g, '')
actual = testUtils.normalizeHtml(testUtils.codeToHtml(code))
equal = assert.equal(actual, expected, `${testFile}`)
} catch (e) {
console.log(testFile, e)
assert.fail(e)
}
if (!equal) {
fs.writeFileSync(`${filename}.actual.html`, actual)
}
})
})
})
})