diff options
Diffstat (limited to 'test/unit')
| -rw-r--r-- | test/unit/specs/services/html_converter/html_line_converter.spec.js (renamed from test/unit/specs/services/tiny_post_html_processor/tiny_post_html_processor.spec.js) | 68 | ||||
| -rw-r--r-- | test/unit/specs/services/html_converter/html_tree_converter.spec.js (renamed from test/unit/specs/services/tiny_post_html_processor/mini_post_html_processor.spec.js) | 14 |
2 files changed, 58 insertions, 24 deletions
diff --git a/test/unit/specs/services/tiny_post_html_processor/tiny_post_html_processor.spec.js b/test/unit/specs/services/html_converter/html_line_converter.spec.js index f301429d..82cb4170 100644 --- a/test/unit/specs/services/tiny_post_html_processor/tiny_post_html_processor.spec.js +++ b/test/unit/specs/services/html_converter/html_line_converter.spec.js @@ -1,46 +1,64 @@ -import { processHtml } from 'src/services/tiny_post_html_processor/tiny_post_html_processor.service.js' +import { convertHtmlToLines } from 'src/services/html_converter/html_line_converter.service.js' + +const mapOnlyText = (processor) => (input) => input.text ? processor(input.text) : input describe('TinyPostHTMLProcessor', () => { describe('with processor that keeps original line should not make any changes to HTML when', () => { const processorKeep = (line) => line it('fed with regular HTML with newlines', () => { const inputOutput = '1<br/>2<p class="lol">3 4</p> 5 \n 6 <p > 7 <br> 8 </p> <br>\n<br/>' - expect(processHtml(inputOutput, processorKeep)).to.eql(inputOutput) + const result = convertHtmlToLines(inputOutput) + const comparableResult = result.map(mapOnlyText(processorKeep)).join('') + expect(comparableResult).to.eql(inputOutput) }) it('fed with possibly broken HTML with invalid tags/composition', () => { const inputOutput = '<feeee dwdwddddddw> <i>ayy<b>lm</i>ao</b> </section>' - expect(processHtml(inputOutput, processorKeep)).to.eql(inputOutput) + const result = convertHtmlToLines(inputOutput) + const comparableResult = result.map(mapOnlyText(processorKeep)).join('') + expect(comparableResult).to.eql(inputOutput) }) it('fed with very broken HTML with broken composition', () => { const inputOutput = '</p> lmao what </div> whats going on <div> wha <p>' - expect(processHtml(inputOutput, processorKeep)).to.eql(inputOutput) + const result = convertHtmlToLines(inputOutput) + const comparableResult = result.map(mapOnlyText(processorKeep)).join('') + expect(comparableResult).to.eql(inputOutput) }) it('fed with sorta valid HTML but tags aren\'t closed', () => { const inputOutput = 'just leaving a <div> hanging' - expect(processHtml(inputOutput, processorKeep)).to.eql(inputOutput) + const result = convertHtmlToLines(inputOutput) + const comparableResult = result.map(mapOnlyText(processorKeep)).join('') + expect(comparableResult).to.eql(inputOutput) }) it('fed with not really HTML at this point... tags that aren\'t finished', () => { const inputOutput = 'do you expect me to finish this <div class=' - expect(processHtml(inputOutput, processorKeep)).to.eql(inputOutput) + const result = convertHtmlToLines(inputOutput) + const comparableResult = result.map(mapOnlyText(processorKeep)).join('') + expect(comparableResult).to.eql(inputOutput) }) it('fed with dubiously valid HTML (p within p and also div inside p)', () => { const inputOutput = 'look ma <p> p \nwithin <p> p! </p> and a <br/><div>div!</div></p>' - expect(processHtml(inputOutput, processorKeep)).to.eql(inputOutput) + const result = convertHtmlToLines(inputOutput) + const comparableResult = result.map(mapOnlyText(processorKeep)).join('') + expect(comparableResult).to.eql(inputOutput) }) it('fed with maybe valid HTML? self-closing divs and ps', () => { const inputOutput = 'a <div class="what"/> what now <p aria-label="wtf"/> ?' - expect(processHtml(inputOutput, processorKeep)).to.eql(inputOutput) + const result = convertHtmlToLines(inputOutput) + const comparableResult = result.map(mapOnlyText(processorKeep)).join('') + expect(comparableResult).to.eql(inputOutput) }) it('fed with valid XHTML containing a CDATA', () => { const inputOutput = 'Yes, it is me, <![CDATA[DIO]]>' - expect(processHtml(inputOutput, processorKeep)).to.eql(inputOutput) + const result = convertHtmlToLines(inputOutput) + const comparableResult = result.map(mapOnlyText(processorKeep)).join('') + expect(comparableResult).to.eql(inputOutput) }) }) describe('with processor that replaces lines with word "_" should match expected line when', () => { @@ -48,49 +66,65 @@ describe('TinyPostHTMLProcessor', () => { it('fed with regular HTML with newlines', () => { const input = '1<br/>2<p class="lol">3 4</p> 5 \n 6 <p > 7 <br> 8 </p> <br>\n<br/>' const output = '_<br/>_<p class="lol">_</p>_\n_<p >_<br>_</p> <br>\n<br/>' - expect(processHtml(input, processorReplace)).to.eql(output) + const result = convertHtmlToLines(input) + const comparableResult = result.map(mapOnlyText(processorReplace)).join('') + expect(comparableResult).to.eql(output) }) it('fed with possibly broken HTML with invalid tags/composition', () => { const input = '<feeee dwdwddddddw> <i>ayy<b>lm</i>ao</b> </section>' const output = '_' - expect(processHtml(input, processorReplace)).to.eql(output) + const result = convertHtmlToLines(input) + const comparableResult = result.map(mapOnlyText(processorReplace)).join('') + expect(comparableResult).to.eql(output) }) it('fed with very broken HTML with broken composition', () => { const input = '</p> lmao what </div> whats going on <div> wha <p>' const output = '</p>_</div>_<div>_<p>' - expect(processHtml(input, processorReplace)).to.eql(output) + const result = convertHtmlToLines(input) + const comparableResult = result.map(mapOnlyText(processorReplace)).join('') + expect(comparableResult).to.eql(output) }) it('fed with sorta valid HTML but tags aren\'t closed', () => { const input = 'just leaving a <div> hanging' const output = '_<div>_' - expect(processHtml(input, processorReplace)).to.eql(output) + const result = convertHtmlToLines(input) + const comparableResult = result.map(mapOnlyText(processorReplace)).join('') + expect(comparableResult).to.eql(output) }) it('fed with not really HTML at this point... tags that aren\'t finished', () => { const input = 'do you expect me to finish this <div class=' const output = '_' - expect(processHtml(input, processorReplace)).to.eql(output) + const result = convertHtmlToLines(input) + const comparableResult = result.map(mapOnlyText(processorReplace)).join('') + expect(comparableResult).to.eql(output) }) it('fed with dubiously valid HTML (p within p and also div inside p)', () => { const input = 'look ma <p> p \nwithin <p> p! </p> and a <br/><div>div!</div></p>' const output = '_<p>_\n_<p>_</p>_<br/><div>_</div></p>' - expect(processHtml(input, processorReplace)).to.eql(output) + const result = convertHtmlToLines(input) + const comparableResult = result.map(mapOnlyText(processorReplace)).join('') + expect(comparableResult).to.eql(output) }) it('fed with maybe valid HTML? self-closing divs and ps', () => { const input = 'a <div class="what"/> what now <p aria-label="wtf"/> ?' const output = '_<div class="what"/>_<p aria-label="wtf"/>_' - expect(processHtml(input, processorReplace)).to.eql(output) + const result = convertHtmlToLines(input) + const comparableResult = result.map(mapOnlyText(processorReplace)).join('') + expect(comparableResult).to.eql(output) }) it('fed with valid XHTML containing a CDATA', () => { const input = 'Yes, it is me, <![CDATA[DIO]]>' const output = '_' - expect(processHtml(input, processorReplace)).to.eql(output) + const result = convertHtmlToLines(input) + const comparableResult = result.map(mapOnlyText(processorReplace)).join('') + expect(comparableResult).to.eql(output) }) }) }) diff --git a/test/unit/specs/services/tiny_post_html_processor/mini_post_html_processor.spec.js b/test/unit/specs/services/html_converter/html_tree_converter.spec.js index 8df2fbc3..a54745c3 100644 --- a/test/unit/specs/services/tiny_post_html_processor/mini_post_html_processor.spec.js +++ b/test/unit/specs/services/html_converter/html_tree_converter.spec.js @@ -1,10 +1,10 @@ -import { convertHtml, processTextForEmoji, getAttrs } from 'src/services/mini_html_converter/mini_html_converter.service.js' +import { convertHtmlToTree, processTextForEmoji, getAttrs } from 'src/services/html_converter/html_tree_converter.service.js' describe('MiniHtmlConverter', () => { - describe('convertHtml', () => { + describe('convertHtmlToTree', () => { it('converts html into a tree structure', () => { const input = '1 <p>2</p> <b>3<img src="a">4</b>5' - expect(convertHtml(input)).to.eql([ + expect(convertHtmlToTree(input)).to.eql([ '1 ', [ '<p>', @@ -26,7 +26,7 @@ describe('MiniHtmlConverter', () => { }) it('converts html to tree while preserving tag formatting', () => { const input = '1 <p >2</p><b >3<img src="a">4</b>5' - expect(convertHtml(input)).to.eql([ + expect(convertHtmlToTree(input)).to.eql([ '1 ', [ '<p >', @@ -47,7 +47,7 @@ describe('MiniHtmlConverter', () => { }) it('converts semi-broken html', () => { const input = '1 <br> 2 <p> 42' - expect(convertHtml(input)).to.eql([ + expect(convertHtmlToTree(input)).to.eql([ '1 ', ['<br>'], ' 2 ', @@ -59,7 +59,7 @@ describe('MiniHtmlConverter', () => { }) it('realistic case 1', () => { const input = '<p><span class="h-card"><a class="u-url mention" data-user="9wRC6T2ZZiKWJ0vUi8" href="https://cawfee.club/users/benis" rel="ugc">@<span>benis</span></a></span> <span class="h-card"><a class="u-url mention" data-user="194" href="https://shigusegubu.club/users/hj" rel="ugc">@<span>hj</span></a></span> nice</p>' - expect(convertHtml(input)).to.eql([ + expect(convertHtmlToTree(input)).to.eql([ [ '<p>', [ @@ -112,7 +112,7 @@ describe('MiniHtmlConverter', () => { }) it('realistic case 2', () => { const inputOutput = 'Country improv: give me a city<br/>Audience: Memphis<br/>Improv troupe: come on, a better one<br/>Audience: el paso' - expect(convertHtml(inputOutput)).to.eql([ + expect(convertHtmlToTree(inputOutput)).to.eql([ 'Country improv: give me a city', [ '<br/>' |
