Files
smartxml/test/test.ts

90 lines
2.2 KiB
TypeScript
Raw Normal View History

2023-10-20 17:38:44 +02:00
import { expect, tap } from '@push.rocks/tapbundle';
import * as smartxml from '../ts/index.js';
2020-10-24 15:47:12 +00:00
2020-10-24 16:39:37 +00:00
let testSmartxml: smartxml.SmartXml;
let testXml = '';
2020-10-24 16:39:37 +00:00
2020-10-24 21:03:51 +00:00
tap.test('should create an instance', async () => {
2020-10-24 16:39:37 +00:00
testSmartxml = new smartxml.SmartXml();
});
tap.test('should create an xml string', async () => {
const xmlResult = testSmartxml.createXmlFromObject({
hello: {
'@_xlmns:teststring': 'hellothere',
'@_xlmns:testnumber': 10,
2020-10-26 00:44:26 +00:00
wow: 'test',
url: [{ loc: 3 }, { loc: 3 }],
},
2020-10-24 16:39:37 +00:00
});
console.log(xmlResult);
testXml = xmlResult;
2020-10-24 15:47:12 +00:00
});
2020-10-24 21:03:51 +00:00
tap.test('should parse an yml file', async () => {
const jsObject = testSmartxml.parseXmlToObject(testXml);
// console.log(JSON.stringify(jsObject, null, 2));
2023-10-20 17:38:44 +02:00
expect(typeof jsObject).toEqual('object');
expect(jsObject)
.arrayItem(1)
.property('hello')
.arrayItem(0)
.property('wow')
.arrayItem(0)
.property('#text')
.toEqual('test');
});
// Test XmlBuilder chainable API
tap.test('should create XML using chainable API', async () => {
const xml = testSmartxml.create()
.ele('root', { att: 'val' })
.ele('foo')
.ele('bar').txt('foobar').up()
.up()
.ele('baz').up()
.up()
.end({ prettyPrint: true });
console.log('Chainable XML:', xml);
expect(xml).toContain('<root');
expect(xml).toContain('att="val"');
expect(xml).toContain('<foo>');
expect(xml).toContain('<bar>foobar</bar>');
expect(xml).toContain('<baz');
});
tap.test('should create XML from object using XmlBuilder', async () => {
const obj = {
root: {
'@_att': 'val',
foo: {
bar: 'foobar'
},
baz: {}
}
};
const xml = testSmartxml.create(obj).end({ prettyPrint: true });
console.log('Object-based XML:', xml);
expect(xml).toContain('<root');
expect(xml).toContain('att="val"');
expect(xml).toContain('<bar>foobar</bar>');
2020-10-24 21:03:51 +00:00
});
tap.test('should add attributes using att() method', async () => {
const xml = testSmartxml.create()
.ele('data')
.att('x', 1)
.att('y', 2)
.txt('value')
.up()
.end();
expect(xml).toContain('x="1"');
expect(xml).toContain('y="2"');
expect(xml).toContain('>value</data>');
});
2020-10-24 16:39:37 +00:00
export default tap.start();