Skip to content

Commit 40a8020

Browse files
committed
add tests
1 parent 01268d2 commit 40a8020

File tree

2 files changed

+221
-3
lines changed

2 files changed

+221
-3
lines changed

dist/htmldiff.js

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/pain_games.spec.js

Lines changed: 221 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,155 @@
11
import cut from '../dist/htmldiff.js';
22

3+
const tableBasic = `<table>
4+
<thead>
5+
<tr>
6+
<th id="col1">col1</th>
7+
<th id="col2">col2</th>
8+
</tr>
9+
</thead>
10+
<tbody>
11+
<tr>
12+
<td>a</td>
13+
<td>b</td>
14+
</tr>
15+
<tr>
16+
<td>c</td>
17+
<td>d</td>
18+
</tr>
19+
</tbody>
20+
</table>`;
21+
22+
const tableBasicEdited = `<table>
23+
<thead>
24+
<tr>
25+
<th id="col1">col1</th>
26+
<th id="col2">col2</th>
27+
</tr>
28+
</thead>
29+
<tbody>
30+
<tr>
31+
<td>aa</td>
32+
<td>b</td>
33+
</tr>
34+
<tr>
35+
<td>c</td>
36+
<td>dd</td>
37+
</tr>
38+
</tbody>
39+
</table>`;
40+
41+
const basicEditDiff = `<table>
42+
<thead>
43+
<tr>
44+
<th id="col1">col1</th>
45+
<th id="col2">col2</th>
46+
</tr>
47+
</thead>
48+
<tbody>
49+
<tr>
50+
<td><del data-operation-index="1">a</del><ins data-operation-index="1">aa</ins></td>
51+
<td>b</td>
52+
</tr>
53+
<tr>
54+
<td>c</td>
55+
<td><del data-operation-index="3">d</del><ins data-operation-index="3">dd</ins></td>
56+
</tr>
57+
</tbody>
58+
</table>`;
59+
60+
const tableFancy = `<table>
61+
<thead>
62+
<tr>
63+
<th id="col1">col1</th>
64+
<th id="col2">col2</th>
65+
</tr>
66+
</thead>
67+
<tbody>
68+
<tr>
69+
<td><p>a</p><p>aa</p></td>
70+
<td>b<br>bb</td>
71+
</tr>
72+
<tr>
73+
<td><ul><li>c</li><li>cc</li></ul></td>
74+
<td><ol><li>c</li><li>cc</li></ol></td>
75+
</tr>
76+
</tbody>
77+
</table>`;
78+
79+
const tableFancyEdited = `<table>
80+
<thead>
81+
<tr>
82+
<th id="col1">col1</th>
83+
<th id="col2">col2</th>
84+
</tr>
85+
</thead>
86+
<tbody>
87+
<tr>
88+
<td><p>a</p><p>aa</p></td>
89+
<td>b<br>bb</td>
90+
</tr>
91+
<tr>
92+
<td><ul><li>c</li><li>cc</li></ul></td>
93+
<td><ol><li>d</li><li>cc</li></ol></td>
94+
</tr>
95+
</tbody>
96+
</table>`;
97+
98+
const fancyEditDiff = `<table>
99+
<thead>
100+
<tr>
101+
<th id="col1">col1</th>
102+
<th id="col2">col2</th>
103+
</tr>
104+
</thead>
105+
<tbody>
106+
<tr>
107+
<td><p>a</p><p>aa</p></td>
108+
<td>b<br></br>bb</td>
109+
</tr>
110+
<tr>
111+
<td><ul><li>c</li><li>cc</li></ul></td>
112+
<td><ol><li><del data-operation-index="1">c</del><ins data-operation-index="1">d</ins></li><li>cc</li></ol></td>
113+
</tr>
114+
</tbody>
115+
</table>`;
116+
117+
const basicToFancy = `<table>
118+
<thead>
119+
<tr>
120+
<th id="col1">col1</th>
121+
<th id="col2">col2</th>
122+
</tr>
123+
</thead>
124+
<tbody>
125+
<tr>
126+
<td><del data-operation-index="1">a</del></td><td><del data-operation-index="1">b</del><p data-diff-node="ins" data-operation-index="1"><ins data-operation-index="1">a</ins></p><p data-diff-node="ins" data-operation-index="1"><ins data-operation-index="1">aa</ins></p></td><td><ins data-operation-index="1">b</ins><br data-diff-node="ins" data-operation-index="1"></br><ins data-operation-index="1">bb</ins></td>
127+
</tr>
128+
<tr>
129+
<td><del data-operation-index="3">c</del></td><td><del data-operation-index="3">d</del><ul data-diff-node="ins" data-operation-index="3"><li data-diff-node="ins" data-operation-index="3"><ins data-operation-index="3">c</ins></li><li data-diff-node="ins" data-operation-index="3"><ins data-operation-index="3">cc</ins></li></ul></td><td><ol data-diff-node="ins" data-operation-index="3"><li data-diff-node="ins" data-operation-index="3"><ins data-operation-index="3">c</ins></li><li data-diff-node="ins" data-operation-index="3"><ins data-operation-index="3">cc</ins></li></ol></td>
130+
</tr>
131+
</tbody>
132+
</table>`;
133+
134+
const fancyToBasic = `<table>
135+
<thead>
136+
<tr>
137+
<th id="col1">col1</th>
138+
<th id="col2">col2</th>
139+
</tr>
140+
</thead>
141+
<tbody>
142+
<tr>
143+
<td><del data-operation-index="1">a</del></td><td><del data-operation-index="1">b</del><p data-diff-node="ins" data-operation-index="1"><ins data-operation-index="1">a</ins></p><p data-diff-node="ins" data-operation-index="1"><ins data-operation-index="1">aa</ins></p></td><td><ins data-operation-index="1">b</ins><br data-diff-node="ins" data-operation-index="1"></br><ins data-operation-index="1">bb</ins></td>
144+
</tr>
145+
<tr>
146+
<td><del data-operation-index="3">c</del></td><td><del data-operation-index="3">d</del><ul data-diff-node="ins" data-operation-index="3"><li data-diff-node="ins" data-operation-index="3"><ins data-operation-index="3">c</ins></li><li data-diff-node="ins" data-operation-index="3"><ins data-operation-index="3">cc</ins></li></ul></td><td><ol data-diff-node="ins" data-operation-index="3"><li data-diff-node="ins" data-operation-index="3"><ins data-operation-index="3">c</ins></li><li data-diff-node="ins" data-operation-index="3"><ins data-operation-index="3">cc</ins></li></ol></td>
147+
</tr>
148+
</tbody>
149+
</table>`;
150+
151+
const textWithSimilarities = `<p>a</p><p>aa</p>`;
152+
3153
describe('Pain Games', function(){
4154
let res;
5155

@@ -47,7 +197,76 @@ describe('Pain Games', function(){
47197
expect(res).to.equal('here <strong>is a </strong><del data-operation-index="1"><strong>bunch of</strong> styled</del>' +
48198
'<ins data-operation-index="1"><em><strong>bunch of</strong> styled</em></ins> text string');
49199
});
50-
}
200+
});
201+
202+
describe('table -- basic', function () {
203+
it ('should do alright adding a table', function(){
204+
res = cut(textWithSimilarities, tableBasic);
205+
expect(res).to.equal( // string concatenation done purely for readability
206+
'<p data-diff-node="del" data-operation-index="0"><del data-operation-index="0">a</del></p>' +
207+
'<p data-diff-node="del" data-operation-index="0"><del data-operation-index="0">aa</del></p>' +
208+
'<table data-diff-node="ins" data-operation-index="0">' +
209+
'<thead data-diff-node="ins" data-operation-index="0"><tr data-diff-node="ins" data-operation-index="0">' +
210+
'<th id="col1" data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">col1</ins></th>' +
211+
'<th id="col2" data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">col2</ins></th>' +
212+
'</tr></thead>' +
213+
'<tbody data-diff-node="ins" data-operation-index="0">' +
214+
'<tr data-diff-node="ins" data-operation-index="0">' +
215+
'<td data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">a</ins></td>' +
216+
'<td data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">b</ins></td>' +
217+
'</tr>' +
218+
'<tr data-diff-node="ins" data-operation-index="0">' +
219+
'<td data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">c</ins></td>' +
220+
'<td data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">d</ins></td>' +
221+
'</tr>' +
222+
'</tbody>' +
223+
'</table>'
224+
);
225+
});
226+
it ('should do alright with editing one table cell', function(){
227+
res = cut(tableBasic, tableBasicEdited);
228+
expect(res).to.equal(basicEditDiff);
229+
});
230+
});
231+
232+
describe('table -- fancy', function () {
233+
it ('should do alright adding a fancy table with similar text', function(){
234+
res = cut(textWithSimilarities, tableFancy);
235+
expect(res).to.equal( // string concatenation done purely for readability
236+
'<p data-diff-node="del" data-operation-index="0"><del data-operation-index="0">a</del></p>' +
237+
'<p data-diff-node="del" data-operation-index="0"><del data-operation-index="0">aa</del></p>' +
238+
'<table data-diff-node="ins" data-operation-index="0">' +
239+
'<thead data-diff-node="ins" data-operation-index="0">' +
240+
'<tr data-diff-node="ins" data-operation-index="0">' +
241+
'<th id="col1" data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">col1</ins></th>' +
242+
'<th id="col2" data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">col2</ins></th>' +
243+
'</tr>' +
244+
'</thead>' +
245+
'<tbody data-diff-node="ins" data-operation-index="0">' +
246+
'<tr data-diff-node="ins" data-operation-index="0">' +
247+
'<td data-diff-node="ins" data-operation-index="0"><p data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">a</ins></p><p data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">aa</ins></p></td>' +
248+
'<td data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">b</ins><br data-diff-node="ins" data-operation-index="0"></br><ins data-operation-index="0">bb</ins></td>' +
249+
'</tr>' +
250+
'<tr data-diff-node="ins" data-operation-index="0">' +
251+
'<td data-diff-node="ins" data-operation-index="0"><ul data-diff-node="ins" data-operation-index="0"><li data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">c</ins></li><li data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">cc</ins></li></ul></td>' +
252+
'<td data-diff-node="ins" data-operation-index="0"><ol data-diff-node="ins" data-operation-index="0"><li data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">c</ins></li><li data-diff-node="ins" data-operation-index="0"><ins data-operation-index="0">cc</ins></li></ol></td>' +
253+
'</tr>' +
254+
'</tbody>' +
255+
'</table>'
256+
);
257+
});
258+
it ('should do alright with editing one fancy table cell', function(){
259+
res = cut(tableFancy, tableFancyEdited);
260+
expect(res).to.equal(fancyEditDiff);
261+
});
262+
it ('should do alright converting a basic table to a fancy one', function(){
263+
res = cut(tableBasic, tableFancy);
264+
expect(res).to.equal(basicToFancy);
265+
});
266+
it ('should do alright converting a fancy table to a basic one', function(){
267+
res = cut(tableBasic, tableFancy);
268+
expect(res).to.equal(fancyToBasic);
269+
});
270+
});
51271

52-
);
53272
});

0 commit comments

Comments
 (0)