// -------------------------------------------------------------------------------------------------------------------- // // xml-generation.js - tests for node-data2xml // // Copyright (c) 2011 Andrew Chilton - http://chilts.org/ // Written by Andrew Chilton // // License: http://opensource.org/licenses/MIT // // -------------------------------------------------------------------------------------------------------------------- var test = require('tape'); var data2xml = require('../data2xml')({}); var declaration = '\n'; // -------------------------------------------------------------------------------------------------------------------- var tests = [ { name : 'empty structure', element : 'topelement', data : {}, exp : declaration + '' }, { name : 'one element structure', element : 'topelement', data : { second : 'value' }, exp : declaration + 'value' }, { name : 'one element structure which has an empty value', element : 'topelement', data : { second : '' }, exp : declaration + '' }, { name : 'one element structure which has a undefined value', element : 'topelement', data : { second : undefined }, exp : declaration + '' }, { name : 'one element structure which has a null value', element : 'topelement', data : { second : null }, exp : declaration + '' }, { name : 'one element structure with an xmlns', element : 'topelement', data : { _attr : { xmlns : 'http://www.appsattic.com/xml/namespace' }, second : 'value' }, exp : declaration + 'value' }, { name : 'two elements', element : 'topelement', data : { second : 'val2', third : 'val3' }, exp : declaration + 'val2val3' }, { name : 'simple hierarchical elements', element : 'topelement', data : { simple : 'val2', complex : { test : 'val4' } }, exp : declaration + 'val2val4' }, { name : 'simple one element array', element : 'topelement', data : { array : [ { item : 'value' } ] }, exp : declaration + 'value' }, { name : 'simple two element array #1', element : 'topelement', data : { array : [ { item : 'value1' }, 'value2' ] }, exp : declaration + 'value1value2' }, { name : 'simple two element array #2', element : 'topelement', data : { array : [ 'value1', 'value2' ] }, exp : declaration + 'value1value2' }, { name : 'simple two element array #3', element : 'topelement', data : { array : { item : [ 'value1', 'value2' ] } }, exp : declaration + 'value1value2' }, { name : 'complex 4 element array with some attributes', element : 'topelement', data : { item : [ { _attr : { type : 'a' }, _value : 'val1' }, { _attr : { type : 'b' }, _value : 'val2' }, 'val3', { _value : 'val4' }, ] }, exp : declaration + 'val1val2val3val4' }, { name : 'element with CDATA', element : 'name', data : { text: [ { _attr: { 'xml:lang': 'de-DE' }, _cdata: 'Some text with unescaped HTML data.' }, ], _value: 'My app name', }, exp : declaration + 'My app nameunescaped HTML data.]]>' }, { name : 'element with CDATA containing a ]]>', element : 'name', data : { text: [ { _attr: { 'xml:lang': 'de-DE' }, _cdata: 'Some text with ]]> twice ]]> inside it.' }, ], _value: 'My app name', }, exp : declaration + 'My app name twice ]]]]> inside it.]]>' }, ]; test('some simple xml', function (t) { tests.forEach(function(test) { var xml = data2xml(test.element, test.data); t.equal(xml, test.exp, test.name); }); t.end(); }); // --------------------------------------------------------------------------------------------------------------------