Skip to content

Commit e092476

Browse files
committed
chore: add tests for no item repeat binding
1 parent 7c0eea5 commit e092476

File tree

4 files changed

+71
-0
lines changed

4 files changed

+71
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"type": "none",
3+
"comment": "chore: add tests for no item repeat binding",
4+
"packageName": "@microsoft/fast-html",
5+
"email": "863023+radium-v@users.noreply.github.com",
6+
"dependentChangeType": "none"
7+
}

packages/fast-html/test/fixtures/repeat/index.html

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,5 +101,22 @@
101101
</ul>
102102
</template>
103103
</test-element-interval-updates>
104+
105+
<test-element-no-item-repeat-binding>
106+
<template shadowrootmode="open">
107+
<ul>
108+
<!--fe-b$$start$$0$$item-in-list$$fe-b--><!--fe-b$$end$$0$$item-in-list$$fe-b-->
109+
</ul>
110+
</template>
111+
</test-element-no-item-repeat-binding>
112+
<f-template name="test-element-no-item-repeat-binding">
113+
<template>
114+
<ul>
115+
<f-repeat value="{item in list}">
116+
<li>{{item}}</li>
117+
</f-repeat>
118+
</ul>
119+
</template>
120+
</f-template>
104121
</body>
105122
</html>

packages/fast-html/test/fixtures/repeat/main.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,15 @@ RenderableFASTElement(TestElementIntervalUpdates).defineAsync({
4747
templateOptions: "defer-and-hydrate",
4848
});
4949

50+
export class TestElementNoItemRepeatBinding extends FASTElement {
51+
@observable
52+
list: Array<string> = [];
53+
}
54+
RenderableFASTElement(TestElementNoItemRepeatBinding).defineAsync({
55+
name: "test-element-no-item-repeat-binding",
56+
templateOptions: "defer-and-hydrate",
57+
});
58+
5059
TemplateElement.options({
5160
"test-element-interval-updates": {
5261
observerMap: "all",

packages/fast-html/test/fixtures/repeat/repeat.spec.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,42 @@ test.describe("f-template", async () => {
9292
});
9393
})).resolves.toEqual("mutations detected");
9494
});
95+
96+
test("repeat directive with no item binding should not error", async ({ page }) => {
97+
await page.goto("/fixtures/repeat/");
98+
99+
const element = page.locator("test-element-no-item-repeat-binding");
100+
const listItems = element.locator("li");
101+
102+
await expect(listItems).toHaveCount(0);
103+
104+
const commentNodeContent = await element.evaluate((node: TestElement) => {
105+
const walker = document.createTreeWalker(
106+
node.shadowRoot!,
107+
NodeFilter.SHOW_COMMENT,
108+
);
109+
110+
const comments: string[] = [];
111+
let currentNode: Node | null = walker.nextNode();
112+
while (currentNode) {
113+
comments.push(currentNode.nodeValue!);
114+
currentNode = walker.nextNode();
115+
}
116+
117+
return comments;
118+
});
119+
120+
expect(commentNodeContent).toEqual(["", ""]);
121+
122+
await element.evaluate((node: TestElement) => {
123+
node.list = [
124+
"A",
125+
"B",
126+
"C"
127+
];
128+
});
129+
130+
await expect(listItems).toHaveCount(3);
131+
await expect(listItems).toContainText(["A", "B", "C"]);
132+
});
95133
});

0 commit comments

Comments
 (0)