From 3201224ecb74f6445f55f96b8b895bd2ef53fd75 Mon Sep 17 00:00:00 2001 From: lidlanca <8693091+lidlanca@users.noreply.github.com> Date: Mon, 16 Aug 2021 15:34:59 -0400 Subject: [PATCH] test(shared): improve test case for toDisplayString (#4337) --- .../shared/__tests__/toDisplayString.spec.ts | 43 +++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) 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', () => { -- 2.47.2