From: lidlanca <8693091+lidlanca@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:34:59 +0000 (-0400) Subject: test(shared): improve test case for toDisplayString (#4337) X-Git-Tag: v3.2.3~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3201224ecb74f6445f55f96b8b895bd2ef53fd75;p=thirdparty%2Fvuejs%2Fcore.git test(shared): improve test case for toDisplayString (#4337) --- diff --git a/packages/shared/__tests__/toDisplayString.spec.ts b/packages/shared/__tests__/toDisplayString.spec.ts index 385e40e35c..53cfcb87a1 100644 --- a/packages/shared/__tests__/toDisplayString.spec.ts +++ b/packages/shared/__tests__/toDisplayString.spec.ts @@ -19,9 +19,46 @@ describe('toDisplayString', () => { expect(toDisplayString(obj)).toBe(JSON.stringify(obj, null, 2)) const arr = [obj] expect(toDisplayString(arr)).toBe(JSON.stringify(arr, null, 2)) - const foo = Object.create(null) - foo.bar = 1 - expect(toDisplayString(foo)).toBe(JSON.stringify(foo, null, 2)) + + const objWithToStringOverride = { + foo: 555, + toString() { + return 'override' + } + } + expect(toDisplayString(objWithToStringOverride)).toBe('override') + + const objWithNonInvokeableToString = { + foo: 555, + toString: null + } + expect(toDisplayString(objWithNonInvokeableToString)).toBe( + `{ + "foo": 555, + "toString": null +}` + ) + + // object created from null does not have .toString in its prototype + const nullObjectWithoutToString = Object.create(null) + nullObjectWithoutToString.bar = 1 + expect(toDisplayString(nullObjectWithoutToString)).toBe( + `{ + "bar": 1 +}` + ) + + // array toString override is ignored + const arrWithToStringOverride = [1, 2, 3] + arrWithToStringOverride.toString = () => + 'override for array is not supported' + expect(toDisplayString(arrWithToStringOverride)).toBe( + `[ + 1, + 2, + 3 +]` + ) }) test('refs', () => {