From f4056eb937b51895617f8fcc6ab084f89f39efd2 Mon Sep 17 00:00:00 2001 From: Boris Bera Date: Sun, 5 Nov 2023 07:13:35 -0500 Subject: [PATCH] Test nested key formatting Signed-off-by: Boris Bera --- .../StructuredMetadataTable.test.tsx | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.test.tsx b/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.test.tsx index db7c53897d..4eb05e715e 100644 --- a/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.test.tsx +++ b/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.test.tsx @@ -115,4 +115,60 @@ describe('', () => { } }); }); + + describe('Title formatting', () => { + const metadata = { + testA: 'stuff', + testB: { testC: 'stuff' }, + testD: [{ testE: 'stuff' }], + }; + + it('should make keys human readable', async () => { + const rendered = render(); + expect(rendered.queryByText(/^Test A/)).toBeInTheDocument(); + expect(rendered.queryByText(/^Test B/)).toBeInTheDocument(); + expect(rendered.queryByText(/^Test C/)).toBeInTheDocument(); + expect(rendered.queryByText(/^Test D/)).toBeInTheDocument(); + expect(rendered.queryByText(/^Test E/)).toBeInTheDocument(); + }); + + it('should be possible to disable it', async () => { + const rendered = render( + key }} + />, + ); + expect(rendered.queryByText(/^testA/)).toBeInTheDocument(); + expect(rendered.queryByText(/^testB/)).toBeInTheDocument(); + expect(rendered.queryByText(/^testC/)).toBeInTheDocument(); + expect(rendered.queryByText(/^testD/)).toBeInTheDocument(); + expect(rendered.queryByText(/^testE/)).toBeInTheDocument(); + }); + + it('should be customizable', async () => { + const spongeBobCase = (key: string) => + key + .split('') + .map((letter, index) => { + if (index % 2 === 0) { + return letter.toLocaleLowerCase('en-US'); + } + return letter.toLocaleUpperCase('en-US'); + }) + .join(''); + + const rendered = render( + , + ); + expect(rendered.queryByText(/^tEsTa/)).toBeInTheDocument(); + expect(rendered.queryByText(/^tEsTb/)).toBeInTheDocument(); + expect(rendered.queryByText(/^tEsTc/)).toBeInTheDocument(); + expect(rendered.queryByText(/^tEsTd/)).toBeInTheDocument(); + expect(rendered.queryByText(/^tEsTe/)).toBeInTheDocument(); + }); + }); });