X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/8132fc186eb0c5fd02c86828c3a4735754296d02..5913c54d19b8f6775633176032161d49f9b2f1aa:/apps/wiki/tests/xslt/auto/auto_test.js diff --git a/apps/wiki/tests/xslt/auto/auto_test.js b/apps/wiki/tests/xslt/auto/auto_test.js deleted file mode 100644 index ab485f51..00000000 --- a/apps/wiki/tests/xslt/auto/auto_test.js +++ /dev/null @@ -1,139 +0,0 @@ -var jsdom = require("jsdom"); -var $ = require('jquery')(new jsdom.JSDOM().window); -var fs = require('fs'); -var exec = require('child_process').exec; -var pd = require('pretty-data').pd; -var ansidiff = require('ansidiff'); - - -eval(fs.readFileSync(__dirname + '/../../../../../redakcja/static/js/wiki/xslt.js') + ''); - - -function assertNodesEqual(lhs, rhs, areHTMLNodes) { - - function throwError() { - throw new Error(ansidiff.chars(pd.xml(lhs), pd.xml(rhs))); - } - - var lhsNode = $(lhs)[0], - rhsNode = $(rhs)[0]; - - if(areHTMLNodes) { - var getMagicAttrsInfo = function(node) { - var valuePrefix = 'x-attr-value-'; - var namePrefix = 'x-attr-name-'; - var startsWith = function(str, prefix) { return str.substr(0, prefix.length) === prefix; } - var isNameAttribute = function(attr) { return startsWith(attr.name, namePrefix); } - var isValueAttribute = function(attr) { return startsWith(attr.name, valuePrefix); } - var extractId = function(attr) { return attr.name.split('-').pop(); } - var temp = {}; - var toret = {map: {}, magicAttrsList: []}; - - for(var i = 0; i < node.attributes.length; i++) { - var attr = node.attributes[i]; - if(isNameAttribute(attr) || isValueAttribute(attr)) { - var id = extractId(attr); - temp[id] = typeof temp[id] === 'undefined' ? {} : temp[id]; - if(isNameAttribute(attr)) - temp[id]['name'] = attr.value; - else - temp[id]['value'] = attr.value; - toret.magicAttrsList.push(attr.name); - } - } - - Object.keys(temp).forEach(function(id) { - var pair = temp[id]; - toret.map[pair.name] = typeof toret.map[pair.name] === 'undefined' ? toret.map[pair.name] = [] : toret.map[pair.name]; - toret.map[pair.name].push(pair.value); - }); - - return toret; - } - - var removeAttrs = function(node, attrsNames) { - attrsNames.forEach(function(name) { - node.removeAttribute(name); - }); - } - - var mapsEqual = function(map1, map2) { - if(Object.keys(map1).length != Object.keys(map2).length) - return false; - var arraysEqual = function(a1, a2) {return a1.slice().sort().join('') === a2.slice().sort().join('');} - Object.keys(map1).forEach(function(key) { - if(Object.keys(map2).indexOf(key) === -1 || !arraysEqual(map2[key], map1[key])) - return false; - }); - return true; - } - - var lhsMagicAttrsInfo = getMagicAttrsInfo(lhsNode), - rhsMagicAttrsInfo = getMagicAttrsInfo(rhsNode); - - removeAttrs(lhsNode, lhsMagicAttrsInfo.magicAttrsList); - removeAttrs(rhsNode, rhsMagicAttrsInfo.magicAttrsList); - - if(!mapsEqual(lhsMagicAttrsInfo.map, rhsMagicAttrsInfo.map)) - throwError(); - } - - if(!lhsNode.isEqualNode(rhsNode)) - throwError(); -} - -suite('wiki.tests.xslt.auto', function() { - - var tempFileName = '.temp.xml'; - var xsltStyleSheetPath = __dirname + '/../../../../../redakcja/static/xsl/wl2html_client.xsl'; - - fs.readdirSync(__dirname + '/data/').forEach(function(fileName) { - - if(fileName === tempFileName) - return; - - var ext = fileName.split('.').pop(); - if(ext !== 'html' && ext !== 'xml') - return; - - var inputData = fs.readFileSync(__dirname + '/data/' + fileName) + ''; - - if(ext === 'html') { - test('[HTML->XML->HTML] ' + fileName, function(done) { - var result = html2text({ - element: $(inputData)[0], - stripOuter: false, - success: function(generatedXML) { - fs.writeFileSync(tempFileName, generatedXML); - exec(['xsltproc', xsltStyleSheetPath, tempFileName].join(' ') , {}, - function(error, stdout, stderr) { - fs.unlinkSync(tempFileName); - assertNodesEqual(inputData, stdout, true); - done(); - }); - }, - error: function(msg){throw msg;} - }); - }); - } else if(ext === 'xml') { - test('[XML->HTML->XML] ' + fileName, function(done) { - var originalXML = $(inputData); - exec(['xsltproc', xsltStyleSheetPath, __dirname + '/data/' + fileName].join(' ') , {}, - function(error, stdout, stderr) { - var generatedHTML = $(stdout); - var result = html2text({ - element: generatedHTML[0], - stripOuter: false, - success: function(xmltext) { - assertNodesEqual(inputData, xmltext); - done(); - }, - error: function(msg){throw msg;} - }); - }); - }); - } - }); -}); - -