]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
test(server-renderer): implement ssrRenderList tests (#726)
authorhareku <hareku908@gmail.com>
Sat, 15 Feb 2020 16:42:38 +0000 (01:42 +0900)
committerGitHub <noreply@github.com>
Sat, 15 Feb 2020 16:42:38 +0000 (11:42 -0500)
packages/server-renderer/__tests__/ssrRenderList.spec.ts

index 700f5eb94c924e7dd488f3bf2d9f41c41564d926..e0dab83117b695d355f96a7eb770c13664c568aa 100644 (file)
@@ -1,3 +1,53 @@
-test('ssr: renderList', () => {
-  // TODO
+import { ssrRenderList } from '../src/helpers/ssrRenderList'
+
+describe('ssr: renderList', () => {
+  let stack: string[] = []
+
+  beforeEach(() => {
+    stack = []
+  })
+
+  it('should render items in an array', () => {
+    ssrRenderList(['1', '2', '3'], (item, index) =>
+      stack.push(`node ${index}: ${item}`)
+    )
+    expect(stack).toEqual(['node 0: 1', 'node 1: 2', 'node 2: 3'])
+  })
+
+  it('should render characters of a string', () => {
+    ssrRenderList('abc', (item, index) => stack.push(`node ${index}: ${item}`))
+    expect(stack).toEqual(['node 0: a', 'node 1: b', 'node 2: c'])
+  })
+
+  it('should render integers 1 through N when given a number N', () => {
+    ssrRenderList(3, (item, index) => stack.push(`node ${index}: ${item}`))
+    expect(stack).toEqual(['node 0: 1', 'node 1: 2', 'node 2: 3'])
+  })
+
+  it('should render properties in an object', () => {
+    ssrRenderList({ a: 1, b: 2, c: 3 }, (item, key, index) =>
+      stack.push(`node ${index}/${key}: ${item}`)
+    )
+    expect(stack).toEqual(['node 0/a: 1', 'node 1/b: 2', 'node 2/c: 3'])
+  })
+
+  it('should render an item for entry in an iterable', () => {
+    const iterable = function*() {
+      yield 1
+      yield 2
+      yield 3
+    }
+
+    ssrRenderList(iterable(), (item, index) =>
+      stack.push(`node ${index}: ${item}`)
+    )
+    expect(stack).toEqual(['node 0: 1', 'node 1: 2', 'node 2: 3'])
+  })
+
+  it('should not render items when source is undefined', () => {
+    ssrRenderList(undefined, (item, index) =>
+      stack.push(`node ${index}: ${item}`)
+    )
+    expect(stack).toEqual([])
+  })
 })