UNPKG

@dailymotion/vmap

Version:
177 lines (161 loc) 3.93 kB
import { childrenByName, parseNodeValue, parseXMLNode } from '../src/parser_utils'; import { readXMLFile } from './utils'; describe('ParserUtils', () => { describe('childrenByName function', () => { const testNode = { childNodes: [ { nodeName: 'Test', }, { nodeName: 'Test2', }, { nodeName: 'vmap:Test', }, { nodeName: 'vmap:Test2', }, { nodeName: 'Test:Test', }, { nodeName: 'Test:Test2', }, { nodeName: 'vmap:Test:Test', }, { nodeName: 'vmap:', }, { nodeName: '', }, { nodeName: undefined, }, { nodeName: null, }, ], }; it('should select children named Test', () => { const result = childrenByName(testNode, 'Test'); expect(result).toEqual([ { nodeName: 'Test', }, { nodeName: 'vmap:Test', }, ]); }); it('should select children named vmap:Test', () => { const result = childrenByName(testNode, 'vmap:Test'); expect(result).toEqual([ { nodeName: 'Test', }, { nodeName: 'vmap:Test', }, ]); }); it('should select children named Test:Test', () => { const result = childrenByName(testNode, 'Test:Test'); expect(result).toEqual([ { nodeName: 'Test:Test', }, { nodeName: 'vmap:Test:Test', }, ]); }); it('should select children named vmap:Test:Test', () => { const result = childrenByName(testNode, 'vmap:Test:Test'); expect(result).toEqual([ { nodeName: 'Test:Test', }, { nodeName: 'vmap:Test:Test', }, ]); }); }); describe('parseNodeValue function', () => { const testNode = { childNodes: [ { nodeName: 'Test', textContent: 'Wrong', }, { nodeName: '#text', textContent: ' Blabla ', }, { nodeName: '', }, { nodeName: undefined, }, { nodeName: null, }, { nodeName: '#text', textContent: ' Blobloblo ', }, ], }; it('should correctly extract text', () => { const result = parseNodeValue(testNode); expect(result).toEqual('BlablaBlobloblo'); }); }); describe('parseXMLNode function', () => { const testXML = readXMLFile('samples/parsing-example.xml'); const result = parseXMLNode(testXML); it('should correctly parse XML', () => { expect(result).toEqual({ attributes: {}, children: { 'vmap:Extension': { attributes: { extAttribute: 'extAttribute content', extAttribute2: 'extAttribute2 content', }, children: { 'vmap:Test': { attributes: { testAttribute: 'testAttribute content', testAttribute2: 'testAttribute2 content', }, children: {}, value: 'Test value', }, 'vmap:Test2': { attributes: { test2Attribute: 'test2Attribute content', test2Attribute2: 'test2Attribute2 content', }, children: {}, value: 'Test2 value', }, }, value: { example: { property1: 1234, property2: 'abcd', }, another: 'qwerty', }, }, }, value: '', }); }); }); });