From 996fc0751c8d31d7d1b3fa7fd3f9b520e8680a77 Mon Sep 17 00:00:00 2001 From: TzeYiing Date: Mon, 11 Apr 2022 14:51:38 +0200 Subject: [PATCH] fix: improve error rendering for logs --- .../interfaces/Settings/Logs/LogTable.tsx | 138 +++++++++++------- studio/tests/pages/projects/LogTable.test.js | 14 ++ 2 files changed, 99 insertions(+), 53 deletions(-) diff --git a/studio/components/interfaces/Settings/Logs/LogTable.tsx b/studio/components/interfaces/Settings/Logs/LogTable.tsx index 710616fe345..bc6f86a2303 100644 --- a/studio/components/interfaces/Settings/Logs/LogTable.tsx +++ b/studio/components/interfaces/Settings/Logs/LogTable.tsx @@ -1,25 +1,22 @@ import dayjs from 'dayjs' import { useEffect, useState, useMemo } from 'react' -import { - Alert, - Button, - IconDownloadCloud, - IconEye, - IconEyeOff, - IconLoader, - Input, - Typography, -} from '@supabase/ui' +import { Alert, Button, IconEye, IconEyeOff, Input } from '@supabase/ui' import DataGrid from '@supabase/react-data-grid' import LogSelection from './LogSelection' import { LogData, QueryType } from './Logs.types' -import { SeverityFormatter, ResponseCodeFormatter, HeaderFormmater } from './LogsFormatters' +import { + SeverityFormatter, + ResponseCodeFormatter, + HeaderFormmater, + jsonSyntaxHighlight, +} from './LogsFormatters' // column renders import DatabaseApiColumnRender from './LogColumnRenderers/DatabaseApiColumnRender' import DatabasePostgresColumnRender from './LogColumnRenderers/DatabasePostgresColumnRender' import CSVButton from 'components/ui/CSVButton' +import { copyToClipboard } from 'lib/helpers' interface Props { data?: Array @@ -262,57 +259,92 @@ const LogTable = ({ !isLoading ? ( <>
-
-
-
-
-
- - - + {!error && ( +
+ <> +
+
+
+
+ + + +
+
-
+
+

No results

+

+ Try another search, or adjusting the filters +

+
+
-
-

No results

-

- Try another search, or adjusting the filters -

-
-
+ )} {error && (
- + {typeof error === 'string' && ( + + )} + {typeof error === 'object' && ( + <> +
+
+                              
+                            
+                          )}
                         
                       
)} diff --git a/studio/tests/pages/projects/LogTable.test.js b/studio/tests/pages/projects/LogTable.test.js index 56b596396fc..458aa84a6f0 100644 --- a/studio/tests/pages/projects/LogTable.test.js +++ b/studio/tests/pages/projects/LogTable.test.js @@ -63,3 +63,17 @@ test('toggle histogram', async () => { userEvent.click(toggle) expect(mockFn).toBeCalled() }) + + +test('error message handling', async () => { + const {rerender} = render() + await expect(screen.findByText("some \nstring")).rejects.toThrow() + await screen.findByDisplayValue(/some/) + await screen.findByDisplayValue(/string/) + + rerender() + await screen.findByText(/some \\nstring/) + await screen.findByText(/some/) + await screen.findByText(/string/) + await screen.findByText(/my_error/) +})