Skip to content

Commit f60e2a8

Browse files
committed
Add test of the HTML serialisation of real world example error diff.
1 parent aa17c4f commit f60e2a8

File tree

1 file changed

+57
-1
lines changed

1 file changed

+57
-1
lines changed

test/assertions/to-satisfy.spec.js

+57-1
Original file line numberDiff line numberDiff line change
@@ -1202,7 +1202,7 @@ describe('"to satisfy" assertion', () => {
12021202
});
12031203

12041204
describe('when used in a real world example', () => {
1205-
it('should produce a good satisfy diff', () => {
1205+
it('should produce a good satisfy diff (text)', () => {
12061206
const element = parseHtml(
12071207
'<ul class="knockout-autocomplete menu scrollable floating-menu" style="left: 0px; top: 0px; bottom: auto; display: block">' +
12081208
'<li class="selected" data-index="0">' +
@@ -1286,5 +1286,61 @@ describe('"to satisfy" assertion', () => {
12861286
`
12871287
);
12881288
});
1289+
1290+
it('should produce a good satisfy diff (html)', () => {
1291+
const element = parseHtml(
1292+
'<ul class="knockout-autocomplete menu scrollable floating-menu" style="left: 0px; top: 0px; bottom: auto; display: block">' +
1293+
'<li class="selected" data-index="0">' +
1294+
'<span class="before"></span>' +
1295+
'<strong class="match">pr</strong>' +
1296+
'<span class="after">ivate</span>' +
1297+
'</li>' +
1298+
'<li data-index="1">' +
1299+
'<span class="before"></span>' +
1300+
'<strong class="match">pr</strong>' +
1301+
'<span class="after">otected</span>' +
1302+
'</li>' +
1303+
'</ul>'
1304+
);
1305+
1306+
expect(
1307+
() => {
1308+
expect(element, 'to satisfy', {
1309+
attributes: {
1310+
style: { display: 'block' },
1311+
class: ['knockout-autocomplete', 'floating-menu']
1312+
},
1313+
children: [
1314+
{
1315+
attributes: { 'data-index': '0', class: 'selected' },
1316+
children: [
1317+
{ attributes: { class: 'before' }, children: [] },
1318+
{ attributes: { class: 'match' }, children: ['pr'] },
1319+
{ attributes: { class: 'after' }, children: ['ivate'] }
1320+
]
1321+
},
1322+
{
1323+
attributes: { 'data-index': '1', class: undefined },
1324+
children: [
1325+
{ attributes: { class: 'before' }, children: [] },
1326+
{ attributes: { class: 'match' }, children: ['pr'] },
1327+
{ attributes: { class: 'after' }, children: ['odtected'] }
1328+
]
1329+
}
1330+
]
1331+
});
1332+
},
1333+
'to throw',
1334+
expect.it(error => {
1335+
const message = error.getErrorMessage('html').toString();
1336+
1337+
expect(
1338+
message,
1339+
'to equal snapshot',
1340+
'<div style="font-family: monospace; white-space: nowrap"><div><span style="color: red; font-weight: bold">expected</span></div><div><span style="color: #999">&lt;</span><span style="color: #905">ul&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">knockout-autocomplete&nbsp;menu&nbsp;scrollable&nbsp;floating-menu</span><span style="color: #999">&quot;</span><span style="color: #690">&nbsp;style</span><span style="color: #999">=&quot;</span><span style="color: #905">left</span><span style="color: #999">:</span><span style="color: #07a">&nbsp;0px</span><span style="color: #999">;</span><span style="color: #07a">&nbsp;</span><span style="color: #905">top</span><span style="color: #999">:</span><span style="color: #07a">&nbsp;0px</span><span style="color: #999">;</span><span style="color: #07a">&nbsp;</span><span style="color: #905">bottom</span><span style="color: #999">:</span><span style="color: #07a">&nbsp;auto</span><span style="color: #999">;</span><span style="color: #07a">&nbsp;</span><span style="color: #905">display</span><span style="color: #999">:</span><span style="color: #07a">&nbsp;block</span><span style="color: #999">&quot;&gt;</span></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">li&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">selected</span><span style="color: #999">&quot;</span><span style="color: #905">&nbsp;</span><span style="color: #690">data-index</span><span style="color: #999">=&quot;</span><span style="color: #07a">0</span><span style="color: #999">&quot;&gt;</span></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">span&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">before</span><span style="color: #999">&quot;&gt;&lt;/</span><span style="color: #905">span</span><span style="color: #999">&gt;</span></div></div></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">strong&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">match</span><span style="color: #999">&quot;&gt;</span>...<span style="color: #999">&lt;/</span><span style="color: #905">strong</span><span style="color: #999">&gt;</span></div></div></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">span&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">after</span><span style="color: #999">&quot;&gt;</span>...<span style="color: #999">&lt;/</span><span style="color: #905">span</span><span style="color: #999">&gt;</span></div></div></div><div><span style="color: #999">&lt;/</span><span style="color: #905">li</span><span style="color: #999">&gt;</span></div></div></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">li&nbsp;</span><span style="color: #690">data-index</span><span style="color: #999">=&quot;</span><span style="color: #07a">1</span><span style="color: #999">&quot;&gt;</span></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">span&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">before</span><span style="color: #999">&quot;&gt;&lt;/</span><span style="color: #905">span</span><span style="color: #999">&gt;</span></div></div></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">strong&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">match</span><span style="color: #999">&quot;&gt;</span>...<span style="color: #999">&lt;/</span><span style="color: #905">strong</span><span style="color: #999">&gt;</span></div></div></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">span&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">after</span><span style="color: #999">&quot;&gt;</span>...<span style="color: #999">&lt;/</span><span style="color: #905">span</span><span style="color: #999">&gt;</span></div></div></div><div><span style="color: #999">&lt;/</span><span style="color: #905">li</span><span style="color: #999">&gt;</span></div></div></div><div><span style="color: #999">&lt;/</span><span style="color: #905">ul</span><span style="color: #999">&gt;</span></div><div><span style="color: red; font-weight: bold">to&nbsp;satisfy</span></div><div>{</div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: #555">attributes</span>:&nbsp;{&nbsp;<span style="color: #555">style</span>:&nbsp;{&nbsp;<span style="color: #555">display</span>:&nbsp;<span style="color: #df5000">\'block\'</span>&nbsp;},&nbsp;<span style="color: #555">class</span>:&nbsp;[&nbsp;<span style="color: #df5000">\'knockout-autocomplete\'</span>,&nbsp;<span style="color: #df5000">\'floating-menu\'</span>&nbsp;]&nbsp;},</div><div><span style="color: #555">children</span>:&nbsp;[&nbsp;{&nbsp;<span style="color: #555">attributes</span>:&nbsp;...,&nbsp;<span style="color: #555">children</span>:&nbsp;...&nbsp;},&nbsp;{&nbsp;<span style="color: #555">attributes</span>:&nbsp;...,&nbsp;<span style="color: #555">children</span>:&nbsp;...&nbsp;}&nbsp;]</div></div></div><div>}</div><div>&nbsp;</div><div><div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">ul</span>&nbsp;<span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">knockout-autocomplete&nbsp;menu&nbsp;scrollable&nbsp;floating-menu</span><span style="color: #999">&quot;</span>&nbsp;<span style="color: #690">style</span><span style="color: #999">=&quot;</span><span style="color: #07a">left:&nbsp;0px;&nbsp;top:&nbsp;0px;&nbsp;bottom:&nbsp;auto;&nbsp;display:&nbsp;block</span><span style="color: #999">&quot;&gt;</span></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">li&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">selected</span><span style="color: #999">&quot;</span><span style="color: #905">&nbsp;</span><span style="color: #690">data-index</span><span style="color: #999">=&quot;</span><span style="color: #07a">0</span><span style="color: #999">&quot;&gt;</span></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">span&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">before</span><span style="color: #999">&quot;&gt;&lt;/</span><span style="color: #905">span</span><span style="color: #999">&gt;</span></div></div></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">strong&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">match</span><span style="color: #999">&quot;&gt;</span>...<span style="color: #999">&lt;/</span><span style="color: #905">strong</span><span style="color: #999">&gt;</span></div></div></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">span&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">after</span><span style="color: #999">&quot;&gt;</span>...<span style="color: #999">&lt;/</span><span style="color: #905">span</span><span style="color: #999">&gt;</span></div></div></div><div><span style="color: #999">&lt;/</span><span style="color: #905">li</span><span style="color: #999">&gt;</span></div></div></div></div></div><div><div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">li</span>&nbsp;<span style="color: #690">data-index</span><span style="color: #999">=&quot;</span><span style="color: #07a">1</span><span style="color: #999">&quot;&gt;</span></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">span&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">before</span><span style="color: #999">&quot;&gt;&lt;/</span><span style="color: #905">span</span><span style="color: #999">&gt;</span></div></div></div></div></div><div><div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">strong&nbsp;</span><span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">match</span><span style="color: #999">&quot;&gt;</span>pr<span style="color: #999">&lt;/</span><span style="color: #905">strong</span><span style="color: #999">&gt;</span></div></div></div></div></div><div><div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div><span style="color: #999">&lt;</span><span style="color: #905">span</span>&nbsp;<span style="color: #690">class</span><span style="color: #999">=&quot;</span><span style="color: #07a">after</span><span style="color: #999">&quot;&gt;</span></div><div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div><div style="display: inline-block; vertical-align: top"><div>otected&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: red; font-weight: bold">//</span></div><div><span style="color: red; font-weight: bold">//</span></div><div><span style="color: red; font-weight: bold">//</span></div><div><span style="color: red; font-weight: bold">//</span></div></div>&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: red; font-weight: bold">should&nbsp;equal</span>&nbsp;<div style="display: inline-block; vertical-align: top"><div><span style="color: #df5000">\'odtected\'</span></div></div></div><div>&nbsp;</div><div><span style="background-color: red; color: white">otected</span></div><div><span style="background-color: green; color: white">odtected</span></div></div></div></div></div></div></div></div></div></div></div><div><span style="color: #999">&lt;/</span><span style="color: #905">span</span><span style="color: #999">&gt;</span></div></div></div></div></div></div></div></div></div></div></div><div><span style="color: #999">&lt;/</span><span style="color: #905">li</span><span style="color: #999">&gt;</span></div></div></div></div></div></div></div></div></div></div></div><div><span style="color: #999">&lt;/</span><span style="color: #905">ul</span><span style="color: #999">&gt;</span></div></div></div></div>'
1341+
);
1342+
})
1343+
);
1344+
});
12891345
});
12901346
});

0 commit comments

Comments
 (0)