|
|
|
@ -9,7 +9,7 @@ describe('ParserHtml', () => { |
|
|
|
|
|
|
|
beforeEach(() => { |
|
|
|
const em = new Editor({}); |
|
|
|
var dom = new DomComponents(em); |
|
|
|
const dom = new DomComponents(em); |
|
|
|
obj = ParserHtml(em, { |
|
|
|
textTags: ['br', 'b', 'i', 'u'], |
|
|
|
textTypes: ['text', 'textnode', 'comment'], |
|
|
|
@ -19,20 +19,20 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Simple div node', () => { |
|
|
|
var str = '<div></div>'; |
|
|
|
var result = [{ tagName: 'div' }]; |
|
|
|
const str = '<div></div>'; |
|
|
|
const result = [{ tagName: 'div' }]; |
|
|
|
expect(obj.parse(str).html).toEqual(result); |
|
|
|
}); |
|
|
|
|
|
|
|
test('Simple article node', () => { |
|
|
|
var str = '<article></article>'; |
|
|
|
var result = [{ tagName: 'article' }]; |
|
|
|
const str = '<article></article>'; |
|
|
|
const result = [{ tagName: 'article' }]; |
|
|
|
expect(obj.parse(str).html).toEqual(result); |
|
|
|
}); |
|
|
|
|
|
|
|
test('Node with attributes', () => { |
|
|
|
var str = '<div id="test1" class="test2 test3" data-one="test4" strange="test5"></div>'; |
|
|
|
var result = [ |
|
|
|
const str = '<div id="test1" class="test2 test3" data-one="test4" strange="test5"></div>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
classes: ['test2', 'test3'], |
|
|
|
@ -47,8 +47,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse style string to object', () => { |
|
|
|
var str = 'color:black; width:100px; test:value;'; |
|
|
|
var result = { |
|
|
|
const str = 'color:black; width:100px; test:value;'; |
|
|
|
const result = { |
|
|
|
color: 'black', |
|
|
|
width: '100px', |
|
|
|
test: 'value', |
|
|
|
@ -57,8 +57,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse style string with values containing colon to object', () => { |
|
|
|
var str = 'background-image:url("https://some-website.ex"); test:value;'; |
|
|
|
var result = { |
|
|
|
const str = 'background-image:url("https://some-website.ex"); test:value;'; |
|
|
|
const result = { |
|
|
|
'background-image': 'url("https://some-website.ex")', |
|
|
|
test: 'value', |
|
|
|
}; |
|
|
|
@ -76,20 +76,20 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse class string to array', () => { |
|
|
|
var str = 'test1 test2 test3 test-4'; |
|
|
|
var result = ['test1', 'test2', 'test3', 'test-4']; |
|
|
|
const str = 'test1 test2 test3 test-4'; |
|
|
|
const result = ['test1', 'test2', 'test3', 'test-4']; |
|
|
|
expect(obj.parseClass(str)).toEqual(result); |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse class string to array with special classes', () => { |
|
|
|
var str = 'test1 test2 test3 test-4 gjs-test'; |
|
|
|
var result = ['test1', 'test2', 'test3', 'test-4', 'gjs-test']; |
|
|
|
const str = 'test1 test2 test3 test-4 gjs-test'; |
|
|
|
const result = ['test1', 'test2', 'test3', 'test-4', 'gjs-test']; |
|
|
|
expect(obj.parseClass(str)).toEqual(result); |
|
|
|
}); |
|
|
|
|
|
|
|
test('Style attribute is isolated', () => { |
|
|
|
var str = '<div id="test1" style="color:black; width:100px; test:value;"></div>'; |
|
|
|
var result = [ |
|
|
|
const str = '<div id="test1" style="color:black; width:100px; test:value;"></div>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
attributes: { id: 'test1' }, |
|
|
|
@ -104,8 +104,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Class attribute is isolated', () => { |
|
|
|
var str = '<div id="test1" class="test2 test3 test4"></div>'; |
|
|
|
var result = [ |
|
|
|
const str = '<div id="test1" class="test2 test3 test4"></div>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
attributes: { id: 'test1' }, |
|
|
|
@ -116,8 +116,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse images nodes', () => { |
|
|
|
var str = '<img id="test1" src="./index.html"/>'; |
|
|
|
var result = [ |
|
|
|
const str = '<img id="test1" src="./index.html"/>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'img', |
|
|
|
type: 'image', |
|
|
|
@ -131,8 +131,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse text nodes', () => { |
|
|
|
var str = '<div id="test1">test2 </div>'; |
|
|
|
var result = [ |
|
|
|
const str = '<div id="test1">test2 </div>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
attributes: { id: 'test1' }, |
|
|
|
@ -144,8 +144,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse text with few text tags', () => { |
|
|
|
var str = '<div id="test1"><br/> test2 <br/> a b <b>b</b> <i>i</i> <u>u</u> test </div>'; |
|
|
|
var result = [ |
|
|
|
const str = '<div id="test1"><br/> test2 <br/> a b <b>b</b> <i>i</i> <u>u</u> test </div>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
attributes: { id: 'test1' }, |
|
|
|
@ -200,8 +200,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse text with few text tags and nested node', () => { |
|
|
|
var str = '<div id="test1">a b <b>b</b> <i>i</i>c <div>ABC</div> <i>i</i> <u>u</u> test </div>'; |
|
|
|
var result = [ |
|
|
|
const str = '<div id="test1">a b <b>b</b> <i>i</i>c <div>ABC</div> <i>i</i> <u>u</u> test </div>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
attributes: { id: 'test1' }, |
|
|
|
@ -269,8 +269,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse text with few text tags and comment', () => { |
|
|
|
var str = '<div id="test1">Some text <br/><!-- comment --><b>Bold</b></div>'; |
|
|
|
var result = [ |
|
|
|
const str = '<div id="test1">Some text <br/><!-- comment --><b>Bold</b></div>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
attributes: { id: 'test1' }, |
|
|
|
@ -299,9 +299,9 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse nested nodes', () => { |
|
|
|
var str = |
|
|
|
const str = |
|
|
|
'<article id="test1"> <div></div> <footer id="test2"></footer> Text mid <div id="last"></div></article>'; |
|
|
|
var result = [ |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'article', |
|
|
|
attributes: { id: 'test1' }, |
|
|
|
@ -334,8 +334,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse nested text nodes', () => { |
|
|
|
var str = '<div>content1 <div>nested</div> content2</div>'; |
|
|
|
var result = [ |
|
|
|
const str = '<div>content1 <div>nested</div> content2</div>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
type: 'text', |
|
|
|
@ -362,8 +362,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse nested span text nodes', () => { |
|
|
|
var str = '<div>content1 <div><span>nested</span></div> content2</div>'; |
|
|
|
var result = [ |
|
|
|
const str = '<div>content1 <div><span>nested</span></div> content2</div>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
components: [ |
|
|
|
@ -394,21 +394,21 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse multiple nodes', () => { |
|
|
|
var str = '<div></div><div></div>'; |
|
|
|
var result = [{ tagName: 'div' }, { tagName: 'div' }]; |
|
|
|
const str = '<div></div><div></div>'; |
|
|
|
const result = [{ tagName: 'div' }, { tagName: 'div' }]; |
|
|
|
expect(obj.parse(str).html).toEqual(result); |
|
|
|
}); |
|
|
|
|
|
|
|
test('Remove script tags', () => { |
|
|
|
var str = '<div><script>var test;</script></div><div></div><script>var test2;</script>'; |
|
|
|
var result = [{ tagName: 'div' }, { tagName: 'div' }]; |
|
|
|
const str = '<div><script>const test;</script></div><div></div><script>const test2;</script>'; |
|
|
|
const result = [{ tagName: 'div' }, { tagName: 'div' }]; |
|
|
|
expect(obj.parse(str).html).toEqual(result); |
|
|
|
}); |
|
|
|
|
|
|
|
test('Isolate styles', () => { |
|
|
|
var str = '<div><style>.a{color: red}</style></div><div></div><style>.b{color: blue}</style>'; |
|
|
|
var resHtml = [{ tagName: 'div' }, { tagName: 'div' }]; |
|
|
|
var resCss = [ |
|
|
|
const str = '<div><style>.a{color: red}</style></div><div></div><style>.b{color: blue}</style>'; |
|
|
|
const resHtml = [{ tagName: 'div' }, { tagName: 'div' }]; |
|
|
|
const resCss = [ |
|
|
|
{ |
|
|
|
selectors: ['a'], |
|
|
|
style: { color: 'red' }, |
|
|
|
@ -418,7 +418,7 @@ describe('ParserHtml', () => { |
|
|
|
style: { color: 'blue' }, |
|
|
|
}, |
|
|
|
]; |
|
|
|
var res = obj.parse(str, ParserCss()); |
|
|
|
const res = obj.parse(str, ParserCss()); |
|
|
|
expect(res.html).toEqual(resHtml); |
|
|
|
expect(res.css).toEqual(resCss); |
|
|
|
}); |
|
|
|
@ -466,8 +466,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse nested div with text and spaces', () => { |
|
|
|
var str = '<div> <p>TestText</p> </div>'; |
|
|
|
var result = [ |
|
|
|
const str = '<div> <p>TestText</p> </div>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
type: 'text', |
|
|
|
@ -494,9 +494,9 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse node with model attributes to fetch', () => { |
|
|
|
var str = |
|
|
|
const str = |
|
|
|
'<div id="test1" data-test="test-value" data-gjs-draggable=".myselector" data-gjs-stuff="test">test2 </div>'; |
|
|
|
var result = [ |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
draggable: '.myselector', |
|
|
|
@ -513,8 +513,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse model attributes with true and false', () => { |
|
|
|
var str = '<div id="test1" data-test="test-value" data-gjs-draggable="true" data-gjs-stuff="false">test2 </div>'; |
|
|
|
var result = [ |
|
|
|
const str = '<div id="test1" data-test="test-value" data-gjs-draggable="true" data-gjs-stuff="false">test2 </div>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
draggable: true, |
|
|
|
@ -531,8 +531,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse attributes with object inside', () => { |
|
|
|
var str = '<div data-gjs-test=\'{ "prop1": "value1", "prop2": 10, "prop3": true}\'>test2 </div>'; |
|
|
|
var result = [ |
|
|
|
const str = '<div data-gjs-test=\'{ "prop1": "value1", "prop2": 10, "prop3": true}\'>test2 </div>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
attributes: {}, |
|
|
|
@ -549,8 +549,8 @@ describe('ParserHtml', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
test('Parse attributes with arrays inside', () => { |
|
|
|
var str = '<div data-gjs-test=\'["value1", "value2"]\'>test2 </div>'; |
|
|
|
var result = [ |
|
|
|
const str = '<div data-gjs-test=\'["value1", "value2"]\'>test2 </div>'; |
|
|
|
const result = [ |
|
|
|
{ |
|
|
|
tagName: 'div', |
|
|
|
attributes: {}, |
|
|
|
|