From a054855c6e713d9ca6221c80615df5826aa0ef28 Mon Sep 17 00:00:00 2001 From: dkon70 Date: Fri, 5 Jan 2024 18:54:17 +0700 Subject: [PATCH 01/10] feat: add error boundary tests --- src/test/errorboundary.test.tsx | 35 +++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/test/errorboundary.test.tsx diff --git a/src/test/errorboundary.test.tsx b/src/test/errorboundary.test.tsx new file mode 100644 index 0000000..e60cf88 --- /dev/null +++ b/src/test/errorboundary.test.tsx @@ -0,0 +1,35 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import ErrorBoundary from '@/components/ErrorBoundary/ErrorBoundary'; +import '@testing-library/jest-dom'; + +const ErrorThrowingComponent = ({ error }: { error: Error }) => { + throw error; +}; + +describe('ErrorBoundary', () => { + test('renders children when there is no error', () => { + render( + +
Test Child
+
+ ); + + expect(screen.getByText('Test Child')).toBeInTheDocument(); + }); + + test('renders error message and reload button on error', () => { + const error = new Error('Test error'); + + render( + + + + ); + + expect( + screen.getByText('Oops... something went wrong...') + ).toBeInTheDocument(); + expect(screen.getByText('Reload app')).toBeInTheDocument(); + }); +}); From ad13fbdedda03e4196da908874e41fb4e571864e Mon Sep 17 00:00:00 2001 From: dkon70 Date: Fri, 5 Jan 2024 20:09:40 +0700 Subject: [PATCH 02/10] feat: add endpoint editor tests --- .../EndpointEditor/EndpointEditor.tsx | 7 ++- src/test/endpointeditor.test.tsx | 43 +++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/test/endpointeditor.test.tsx diff --git a/src/components/EndpointEditor/EndpointEditor.tsx b/src/components/EndpointEditor/EndpointEditor.tsx index 7ce229b..bb9ac1d 100644 --- a/src/components/EndpointEditor/EndpointEditor.tsx +++ b/src/components/EndpointEditor/EndpointEditor.tsx @@ -24,9 +24,14 @@ const EndpointEditor = () => { className="pl-2 my-5 w-full h-[40px] bg-white rounded text-black outline-none" value={inputValue} onChange={(e) => dispatch(setUrl(e.target.value))} + data-testid="input" /> )} - diff --git a/src/test/endpointeditor.test.tsx b/src/test/endpointeditor.test.tsx new file mode 100644 index 0000000..83a8959 --- /dev/null +++ b/src/test/endpointeditor.test.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import { render, screen, fireEvent } from '@testing-library/react'; +import { Provider } from 'react-redux'; +import EndpointEditor from '@/components/EndpointEditor/EndpointEditor'; +import store from '@/lib/store/store'; +import '@testing-library/jest-dom'; + +describe('EndpointEditor', () => { + test('renders endpoint editor correctly', () => { + render( + + + + ); + + const button = screen.getByTestId('button'); + fireEvent.click(button); + const input = screen.getByTestId('input'); + expect(input).toBeInTheDocument(); + }); + + test('saves changes correctly', () => { + render( + + + + ); + + const editButton = screen.getByTestId('button'); + fireEvent.click(editButton); + + const input = screen.getByTestId('input'); + fireEvent.change(input, { target: { value: 'https://test.test' } }); + + const saveButton = screen.getByTestId('button'); + fireEvent.click(saveButton); + + expect(store.getState().data.apiUrl).toBe('https://test.test'); + + const editedInput = screen.queryByTestId('input'); + expect(editedInput).toBeNull(); + }); +}); From 19f1fc10c20a3f2823ef879dbf773968257e9a6f Mon Sep 17 00:00:00 2001 From: dkon70 Date: Sat, 6 Jan 2024 00:57:03 +0700 Subject: [PATCH 03/10] fix: prettifier test fix --- jest.config.mjs | 5 +++++ src/test/prettifier.test.tsx | 10 ++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/jest.config.mjs b/jest.config.mjs index 127f855..c3a4f4a 100644 --- a/jest.config.mjs +++ b/jest.config.mjs @@ -11,6 +11,11 @@ const config = { coverageReporters: ['text', 'lcov', 'clover'], collectCoverageFrom: ['src/**/*.ts', 'src/**/*.tsx'], coverageDirectory: path.join(process.cwd(), 'coverage'), + coveragePathIgnorePatterns: [ + 'src/test/setup.ts', + 'lib/store', + 'src/pages/_document.tsx', + ], }; export default createJestConfig(config); diff --git a/src/test/prettifier.test.tsx b/src/test/prettifier.test.tsx index cff9ae5..821ad66 100644 --- a/src/test/prettifier.test.tsx +++ b/src/test/prettifier.test.tsx @@ -1,4 +1,4 @@ -import { prettifyText } from '@/lib/prettifier'; +import { prettifyText } from '@/lib/utils'; const text1 = '{hgfjhg : { fjhgkdh: ghjhgj } ,djfhg :fhgkdj}'; const text2 = `{ @@ -6,19 +6,17 @@ const text2 = `{ fjhgkdh: ghjhgj }, djfhg: fhgkdj -} -`; +}`; const text3 = `{ field(arg: "value") { subField } }`; const text4 = `{ - field(arg: "value") { + field(arg: "value"){ subField } -} -`; +}`; const text5 = '(}'; describe('Prettifier', () => { From 41e537b0d0a78fb8baeee8d5ef7fa5e35a6fbd6f Mon Sep 17 00:00:00 2001 From: dkon70 Date: Sun, 7 Jan 2024 00:24:07 +0700 Subject: [PATCH 04/10] refactor: rename endpoint test --- src/test/{endpointeditor.test.tsx => endpoint.test.tsx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/test/{endpointeditor.test.tsx => endpoint.test.tsx} (100%) diff --git a/src/test/endpointeditor.test.tsx b/src/test/endpoint.test.tsx similarity index 100% rename from src/test/endpointeditor.test.tsx rename to src/test/endpoint.test.tsx From b1e52930c880c694e24e1a251a76f3bc10ae88ed Mon Sep 17 00:00:00 2001 From: dkon70 Date: Sun, 7 Jan 2024 00:36:43 +0700 Subject: [PATCH 05/10] refactor: remove 2nd endpoint test file --- src/test/EndpointEditor.test.tsx | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 src/test/EndpointEditor.test.tsx diff --git a/src/test/EndpointEditor.test.tsx b/src/test/EndpointEditor.test.tsx deleted file mode 100644 index 3c250ca..0000000 --- a/src/test/EndpointEditor.test.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { render, screen } from '@testing-library/react'; -import '@testing-library/jest-dom'; -import EndpointEditor from '@/components/EndpointEditor/EndpointEditor'; -import store from '@/lib/store/store'; -import { Provider } from 'react-redux'; - -describe('Endpoint editor tests: ', () => { - test('Footer exists', () => { - render( - - - - ); - const endpointEditor = screen.getByTestId('endpoint'); - expect(endpointEditor).toBeInTheDocument(); - }); - - test('Footer renders correctly', () => { - render( - - - - ); - const button = screen.getAllByTestId('button'); - expect(button).toBeInTheDocument; - }); -}); From 651ac60c047de5271ef7d6aa4c9465353e3bd659 Mon Sep 17 00:00:00 2001 From: dkon70 Date: Sun, 7 Jan 2024 00:38:55 +0700 Subject: [PATCH 06/10] feat: add extra main page test --- src/pages/main/index.tsx | 3 +++ src/test/main.test.tsx | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/pages/main/index.tsx b/src/pages/main/index.tsx index 00c5fe7..cbb3b1a 100644 --- a/src/pages/main/index.tsx +++ b/src/pages/main/index.tsx @@ -120,6 +120,7 @@ const Main = () => { ` hover:bg-slate-600 rounded h-10 w-10 p-2 duration-150` )} onClick={docsOpenHandler} + data-testid='docs-button' > docs @@ -129,6 +130,7 @@ const Main = () => { ` hover:bg-slate-600 rounded h-10 w-10 p-2 duration-150` )} onClick={urlOpenHandler} + data-testid='url-button' > url @@ -139,6 +141,7 @@ const Main = () => { className={`${ isDocsOpen ? 'absolute z-30 inset-x-[50px]' : 'hidden' } max-w-[calc(100vw-100px)] max-h-[calc(100vh-220px)] h-full transition delay-200`} + data-testid='docs-container' > {schemaLoading ? (
Loading...
diff --git a/src/test/main.test.tsx b/src/test/main.test.tsx index e7a2e82..bf5a347 100644 --- a/src/test/main.test.tsx +++ b/src/test/main.test.tsx @@ -1,4 +1,4 @@ -import { render, screen } from '@testing-library/react'; +import { render, screen, fireEvent } from '@testing-library/react'; import '@testing-library/jest-dom'; import Main from '@/pages/main'; import store from '@/lib/store/store'; @@ -25,4 +25,20 @@ describe('Main tests: ', () => { const sections = screen.getAllByTestId('section'); expect(sections).toHaveLength(4); }); + + test('Toggle Docs and URL buttons', () => { + render( + +
+ + ); + + const docsButton = screen.getByTestId('docs-button'); + const urlButton = screen.getByTestId('url-button'); + + fireEvent.click(docsButton); + expect(screen.getByTestId('docs-container')).toBeInTheDocument(); + fireEvent.click(urlButton); + expect(screen.getByText('URL')).toBeInTheDocument(); + }); }); From 85b394a7d7818afaa52ab749a8fe0de108290dfc Mon Sep 17 00:00:00 2001 From: dkon70 Date: Sun, 7 Jan 2024 00:44:40 +0700 Subject: [PATCH 07/10] refactor: format code by prettier --- src/pages/main/index.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/main/index.tsx b/src/pages/main/index.tsx index cbb3b1a..9db1441 100644 --- a/src/pages/main/index.tsx +++ b/src/pages/main/index.tsx @@ -120,7 +120,7 @@ const Main = () => { ` hover:bg-slate-600 rounded h-10 w-10 p-2 duration-150` )} onClick={docsOpenHandler} - data-testid='docs-button' + data-testid="docs-button" > docs @@ -130,7 +130,7 @@ const Main = () => { ` hover:bg-slate-600 rounded h-10 w-10 p-2 duration-150` )} onClick={urlOpenHandler} - data-testid='url-button' + data-testid="url-button" > url @@ -141,7 +141,7 @@ const Main = () => { className={`${ isDocsOpen ? 'absolute z-30 inset-x-[50px]' : 'hidden' } max-w-[calc(100vw-100px)] max-h-[calc(100vh-220px)] h-full transition delay-200`} - data-testid='docs-container' + data-testid="docs-container" > {schemaLoading ? (
Loading...
From d8b4d5be6448d320ebd09e4715c39f170dc834d2 Mon Sep 17 00:00:00 2001 From: dkon70 Date: Sun, 7 Jan 2024 01:05:06 +0700 Subject: [PATCH 08/10] feat: add firebase config with fake keys for tests --- .gitignore | 2 -- firebase.config.ts | 11 +++++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 firebase.config.ts diff --git a/.gitignore b/.gitignore index 4f80759..93a6164 100644 --- a/.gitignore +++ b/.gitignore @@ -36,5 +36,3 @@ yarn-error.log* next-env.d.ts .vscode - -firebase.config.ts \ No newline at end of file diff --git a/firebase.config.ts b/firebase.config.ts new file mode 100644 index 0000000..4b6c547 --- /dev/null +++ b/firebase.config.ts @@ -0,0 +1,11 @@ +const firebaseKeys = { + NEXT_PUBLIC_FIREBASE_API_KEY: 'test', + NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN: 'test', + NEXT_PUBLIC_FIREBASE_PROJECT_ID: 'test', + NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET: 'test', + NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: 'test', + NEXT_PUBLIC_FIREBASE_APP_ID: 'test', + NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID: 'test', +}; + +export default firebaseKeys; From 0b091a0913464a023de1cbf44cea8f66e6e788f1 Mon Sep 17 00:00:00 2001 From: dkon70 Date: Sun, 7 Jan 2024 03:42:12 +0700 Subject: [PATCH 09/10] fix: editor line overflow behavior fix --- src/pages/main/index.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/pages/main/index.tsx b/src/pages/main/index.tsx index 9db1441..4bb26e9 100644 --- a/src/pages/main/index.tsx +++ b/src/pages/main/index.tsx @@ -173,7 +173,10 @@ const Main = () => { ) : null} -
+
@@ -181,7 +184,10 @@ const Main = () => {
-
+
From a96e5fcf9efb9ba7fcb44329936da5963b0902d5 Mon Sep 17 00:00:00 2001 From: Natalia Lebedeva Date: Sun, 7 Jan 2024 21:47:51 +0600 Subject: [PATCH 10/10] fix: fix favicon --- {src/images => public}/favicon.ico | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename {src/images => public}/favicon.ico (100%) diff --git a/src/images/favicon.ico b/public/favicon.ico similarity index 100% rename from src/images/favicon.ico rename to public/favicon.ico