UNPKG

gcfixer

Version:

Normalize Geocaching GPX file for Garmin devices

157 lines (142 loc) 4.88 kB
/* tslint:disable:object-literal-sort-keys */ import * as utils from './utils'; describe('unescape', () => { it('gotta catch them all', () => { const data = '&amp;lt; * &lt;-&amp;deg;-&amp;amp;-& -&amp; - ,,-„-“-&gt; * /&amp;gt;'; const expected = '#@AMP@LT@# * &lt;-&deg;-&amp;-& -& - \"-\"-\"-&gt; * /#@AMP@GT@#'; const result = utils.unescape(data); expect(result).toEqual(expected); }); }); describe('escape', () => { it('gotta catch them all', () => { const data = '<&lt;-#@AMP@LT@#-#@AMP@GT@#-&amp;- ,,&gt;>'; const expected = '<&amp;lt;-&#171;-&#187;-&amp;amp;-\"&amp;gt;>'; const result = utils.escape(data); expect(result).toEqual(expected); }); }); describe('escape with tags', () => { it('gotta catch them all', () => { const data = '<&lt;-#@AMP@LT@#-#@AMP@GT@#-&amp;- ,,&gt;>'; const expected = '&lt;&amp;lt;-&#171;-&#187;-&amp;amp;-\"&amp;gt;&gt;'; const result = utils.escape(data, true); expect(result).toEqual(expected); }); }); describe('removeUrl', () => { it('http', () => { const data = 'some text (http://some.url/here) and text'; const expected = 'some text and text'; const result = utils.removeUrl(data); expect(result).toEqual(expected); }); it('https', () => { const data = 'some text (https://some.url) and text'; const expected = 'some text and text'; const result = utils.removeUrl(data); expect(result).toEqual(expected); }); }); describe('processText', () => { it('desc', () => { const flag = { desc: true, text: false, removeUrl: false, stripHtml: true }; const data = '&lt;p&gt; ľščťžýáí 40° &lt;/p&gt; &lt;img src="foo.jpg" /&gt;'; const expected = 'lsctzyai 40°'; const result = utils.processText(data, flag); expect(result).toEqual(expected); }); it('text', () => { const flag = { desc: false, text: true, removeUrl: false, stripHtml: true }; const data = '&lt; ľščťžýáí 40° &gt;'; const expected = '&#171; lsctzyai 40° &#187;'; const result = utils.processText(data, flag); expect(result).toEqual(expected); }); it('desc and url', () => { const flag = { desc: true, text: false, removeUrl: true, stripHtml: true }; const data = '&lt;p&gt;ľščťžýáí 40&deg;&lt;/p&gt; &lt;a href=&quot;http://foo.com&quot;&gt;link&lt;/a&gt;'; const expected = 'lsctzyai 40°\n\nlink'; const result = utils.processText(data, flag); expect(result).toEqual(expected); }); }); describe('tag creating', () => { it('opening tag <single />', () => { const result = utils.createTag({ attrs: {}, closing: false, lastParent: 'groundspeak:travelbugs /', level: 3, name: 'groundspeak:travelbugs /' }); const expected = '<groundspeak:travelbugs />'; expect(result.levelMinus).toBeTruthy(); expect(result.tag.trim()).toEqual(expected); }); it('opening tag <single with="attr" />', () => { const result = utils.createTag({ attrs: { minlat: '48.728433', minlon: '21.241983', maxlat: '48.728617', maxlon: '21.242033 /' }, closing: false, lastParent: 'bounds', level: 1, name: 'bounds' }); const expected = '<bounds minlat="48.728433" minlon="21.241983" maxlat="48.728617" maxlon="21.242033" />'; expect(result.levelMinus).toBeTruthy(); expect(result.tag.trim()).toEqual(expected); }); it('opening tag <paired>', () => { const result = utils.createTag({ attrs: {}, closing: false, lastParent: 'keywords', level: 1, name: 'keywords' }); const expected = '<keywords>'; expect(result.levelMinus).toBeFalsy(); expect(result.tag.trim()).toEqual(expected); }); it('opening tag <paired with="attr">', () => { const result = utils.createTag({ attrs: { id: '1234567' }, closing: false, lastParent: 'groundspeak:owner', level: 3, name: 'groundspeak:owner' }); const expected = '<groundspeak:owner id="1234567">'; expect(result.levelMinus).toBeFalsy(); expect(result.tag.trim()).toEqual(expected); }); it('closing tag </paired>', () => { const result = utils.createTag({ attrs: undefined, closing: true, lastParent: 'keywords', level: 0, name: 'keywords' }); const expected = '</keywords>'; expect(result.levelMinus).toBeFalsy(); expect(result.tag.trim()).toEqual(expected); }); it('closing tag </paired> diff parent', () => { const result = utils.createTag({ attrs: undefined, closing: true, lastParent: 'groundspeak:attribute', level: 2, name: 'groundspeak:attributes' }); const expected = '</groundspeak:attributes>'; expect(result.levelMinus).toBeFalsy(); expect(result.tag.trim()).toEqual(expected); }); });