Skip to content

Commit bc0659c

Browse files
committed
Falsy dnodes are now filtered by widgetbase, so deal with this in asserting render
1 parent 6c52dc1 commit bc0659c

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

src/testing/support/assertRender.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,15 @@ export function formatDNodes(nodes: DNode | DNode[], depth: number = 0): string
3030
for (let i = 0; i < depth; i++) {
3131
tabs = `${tabs}\t`;
3232
}
33+
let requiresCarriageReturn = false;
3334
let formattedNode = nodes.reduce((result: string, node, index) => {
34-
if (node === null || node === undefined) {
35+
if (!node) {
3536
return result;
3637
}
37-
if (index > 0) {
38+
if (requiresCarriageReturn) {
3839
result = `${result}\n`;
40+
} else {
41+
requiresCarriageReturn = true;
3942
}
4043
result = `${result}${tabs}`;
4144

@@ -48,7 +51,7 @@ export function formatDNodes(nodes: DNode | DNode[], depth: number = 0): string
4851
}
4952

5053
result = `${result}${formatNode(node, tabs)}`;
51-
if (node.children && node.children.length > 0) {
54+
if (node.children && node.children.some((child) => !!child)) {
5255
result = `${result}, [\n${formatDNodes(node.children, depth + 1)}\n${tabs}]`;
5356
}
5457
return `${result})`;

tests/testing/unit/support/assertRender.ts

+16-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,13 @@ class MockWidget extends WidgetBase {
1515

1616
class OtherWidget extends WidgetBase {
1717
render() {
18-
return v('div', { key: 'one', classes: 'class' }, ['text node', undefined, w(MockWidget, {})]);
18+
return v('div', { key: 'one', classes: 'class' }, ['text node', undefined, '', null, w(MockWidget, {})]);
19+
}
20+
}
21+
22+
class FalsyChildren extends WidgetBase {
23+
render() {
24+
return v('div', { key: 'one', classes: 'class' }, [undefined, '', null]);
1925
}
2026
}
2127

@@ -86,11 +92,19 @@ describe('support/assertRender', () => {
8692
assert.doesNotThrow(() => {
8793
assertRender(
8894
renderResult,
89-
v('div', { classes: 'class', key: 'one' }, ['text node', undefined, w(MockWidget, {})])
95+
v('div', { classes: 'class', key: 'one' }, ['text node', undefined, '', null, w(MockWidget, {})])
9096
);
9197
});
9298
});
9399

100+
it('Should not throw when all the children are falsy', () => {
101+
const widget = new FalsyChildren();
102+
const renderResult = widget.__render__();
103+
assert.doesNotThrow(() => {
104+
assertRender(renderResult, v('div', { classes: 'class', key: 'one' }, [undefined, '', null]));
105+
});
106+
});
107+
94108
it('Should throw when actual and expected do not match', () => {
95109
const widget = new OtherWidget();
96110
const renderResult = widget.__render__();

0 commit comments

Comments
 (0)