From a8c82909fafe5c388e1b5e44f4109db760e967ac Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Sat, 5 Oct 2019 23:22:42 -0400 Subject: [PATCH] test: Add tests for some runtime helpers (#87) * test for `renderList` * test for `toHandlers` --- .../__tests__/helpers/renderList.spec.ts | 44 +++++++++++++++++++ .../__tests__/helpers/toHandlers.spec.ts | 25 +++++++++++ packages/runtime-test/src/jestUtils.ts | 5 ++- 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 packages/runtime-core/__tests__/helpers/renderList.spec.ts create mode 100644 packages/runtime-core/__tests__/helpers/toHandlers.spec.ts diff --git a/packages/runtime-core/__tests__/helpers/renderList.spec.ts b/packages/runtime-core/__tests__/helpers/renderList.spec.ts new file mode 100644 index 0000000000..d55bffbd8d --- /dev/null +++ b/packages/runtime-core/__tests__/helpers/renderList.spec.ts @@ -0,0 +1,44 @@ +import { renderList } from '../../src/helpers/renderList' + +describe('renderList', () => { + it('should render items in an array', () => { + expect( + renderList(['1', '2', '3'], (item, index) => `node ${index}: ${item}`) + ).toEqual(['node 0: 1', 'node 1: 2', 'node 2: 3']) + }) + + it('should render characters of a string', () => { + expect( + renderList('123', (item, index) => `node ${index}: ${item}`) + ).toEqual(['node 0: 1', 'node 1: 2', 'node 2: 3']) + }) + + it('should render integers 1 through N when given a number N', () => { + expect(renderList(3, (item, index) => `node ${index}: ${item}`)).toEqual([ + 'node 0: 1', + 'node 1: 2', + 'node 2: 3' + ]) + }) + + it('should render properties in an object', () => { + expect( + renderList( + { a: 1, b: 2, c: 3 }, + (item, key, index) => `node ${index}/${key}: ${item}` + ) + ).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 + } + + expect( + renderList(iterable(), (item, index) => `node ${index}: ${item}`) + ).toEqual(['node 0: 1', 'node 1: 2', 'node 2: 3']) + }) +}) diff --git a/packages/runtime-core/__tests__/helpers/toHandlers.spec.ts b/packages/runtime-core/__tests__/helpers/toHandlers.spec.ts new file mode 100644 index 0000000000..a71ef3893f --- /dev/null +++ b/packages/runtime-core/__tests__/helpers/toHandlers.spec.ts @@ -0,0 +1,25 @@ +import { toHandlers } from '../../src/helpers/toHandlers' +import { mockWarn } from '@vue/runtime-test' + +describe('toHandlers', () => { + mockWarn() + + it('should not accept non-objects', () => { + toHandlers((null as unknown) as any) + toHandlers((undefined as unknown) as any) + + expect( + 'v-on with no argument expects an object value.' + ).toHaveBeenWarnedTimes(2) + }) + + it('should properly change object keys', () => { + const input = () => {} + const change = () => {} + + expect(toHandlers({ input, change })).toStrictEqual({ + oninput: input, + onchange: change + }) + }) +}) diff --git a/packages/runtime-test/src/jestUtils.ts b/packages/runtime-test/src/jestUtils.ts index 6ebbcb91bc..6e488fb9ac 100644 --- a/packages/runtime-test/src/jestUtils.ts +++ b/packages/runtime-test/src/jestUtils.ts @@ -57,11 +57,12 @@ export function mockWarn() { found++ } }) - if (found > 0) { + + if (found === n) { return { pass: true, message: () => - `expected "${received}" not to have been warned ${n} times.` + `expected "${received}" to have been warned ${n} times.` } } else { return { -- 2.47.3