From: Jordan Pittman Date: Sun, 6 Oct 2019 03:22:42 +0000 (-0400) Subject: test: Add tests for some runtime helpers (#87) X-Git-Tag: v3.0.0-alpha.0~585 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a8c82909fafe5c388e1b5e44f4109db760e967ac;p=thirdparty%2Fvuejs%2Fcore.git test: Add tests for some runtime helpers (#87) * test for `renderList` * test for `toHandlers` --- 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 {