diff --git a/src/App.test.tsx b/src/App.test.tsx deleted file mode 100644 index b0790f1..0000000 --- a/src/App.test.tsx +++ /dev/null @@ -1,62 +0,0 @@ -// Imports -import { describe, it, expect, afterEach } from 'vitest'; -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; - -// To Test -import App from './App'; - -// Tests -describe('Renders main page correctly', async () => { - /** - * Resets all renders after each test - */ - afterEach(() => { - cleanup(); - }); - - /** - * Passes - shows title correctly - */ - it('Should render the page correctly', async () => { - // Setup - await render(); - const h1 = await screen.queryByText('Vite + React'); - - // Post Expectations - expect(h1).toBeInTheDocument(); - }); - - /** - * Passes - shows the button count correctly present - */ - it('Should show the button count set to 0', async () => { - // Setup - await render(); - const button = await screen.queryByText('count is 0'); - - // Expectations - expect(button).toBeInTheDocument(); - }); - - /** - * Passes - clicks the button 3 times and shows the correct count - */ - it('Should show the button count set to 3', async () => { - // Setup - const user = userEvent.setup(); - await render(); - const button = await screen.queryByText('count is 0'); - - // Pre Expectations - expect(button).toBeInTheDocument(); - - // Actions - await user.click(button as HTMLElement); - await user.click(button as HTMLElement); - await user.click(button as HTMLElement); - - // Post Expectations - expect(button?.innerHTML).toBe('count is 3'); - }); -}); diff --git a/src/App.tsx b/src/App.tsx index afe48ac..cd79907 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,35 +1,14 @@ -import { useState } from 'react' -import reactLogo from './assets/react.svg' -import viteLogo from '/vite.svg' -import './App.css' +import { createBrowserRouter, RouterProvider } from 'react-router-dom' -function App() { - const [count, setCount] = useState(0) +import { MainPage } from 'components/pages' - return ( - <> -
- - Vite logo - - - React logo - -
-

Vite + React

-
- -

- Edit src/App.tsx and save to test HMR -

-
-

- Click on the Vite and React logos to learn more -

- - ) -} +const router = createBrowserRouter([ + { + path: '/', + element: , + }, +]) + +const App = () => export default App diff --git a/src/App.css b/src/components/pages/MainPage/MainPage.css similarity index 100% rename from src/App.css rename to src/components/pages/MainPage/MainPage.css diff --git a/src/components/pages/MainPage/MainPage.test.tsx b/src/components/pages/MainPage/MainPage.test.tsx new file mode 100644 index 0000000..4568b87 --- /dev/null +++ b/src/components/pages/MainPage/MainPage.test.tsx @@ -0,0 +1,60 @@ +import { describe, it, expect, afterEach } from 'vitest' +import { render, screen, cleanup } from '@testing-library/react' +import userEvent from '@testing-library/user-event' + +import MainPage from './MainPage' + +// Tests +describe('Renders main page correctly', async () => { + /** + * Resets all renders after each test + */ + afterEach(() => { + cleanup() + }) + + /** + * Passes - shows title correctly + */ + it('Should render the page correctly', async () => { + // Setup + await render() + const h1 = await screen.queryByText('Vite + React') + + // Post Expectations + expect(h1).toBeInTheDocument() + }) + + /** + * Passes - shows the button count correctly present + */ + it('Should show the button count set to 0', async () => { + // Setup + await render() + const button = await screen.queryByText('count is 0') + + // Expectations + expect(button).toBeInTheDocument() + }) + + /** + * Passes - clicks the button 3 times and shows the correct count + */ + it('Should show the button count set to 3', async () => { + // Setup + const user = userEvent.setup() + await render() + const button = await screen.queryByText('count is 0') + + // Pre Expectations + expect(button).toBeInTheDocument() + + // Actions + await user.click(button as HTMLElement) + await user.click(button as HTMLElement) + await user.click(button as HTMLElement) + + // Post Expectations + expect(button?.innerHTML).toBe('count is 3') + }) +}) diff --git a/src/components/pages/MainPage/MainPage.tsx b/src/components/pages/MainPage/MainPage.tsx new file mode 100644 index 0000000..60a371b --- /dev/null +++ b/src/components/pages/MainPage/MainPage.tsx @@ -0,0 +1,31 @@ +import { useState } from 'react' +import reactLogo from 'assets/react.svg' +import viteLogo from '/vite.svg' +import './MainPage.css' + +function MainPage() { + const [count, setCount] = useState(0) + + return ( + <> + +

Vite + React

+
+ +

+ Edit src/App.tsx and save to test HMR +

+
+

Click on the Vite and React logos to learn more

+ + ) +} + +export default MainPage diff --git a/src/components/pages/MainPage/index.ts b/src/components/pages/MainPage/index.ts new file mode 100644 index 0000000..812f47e --- /dev/null +++ b/src/components/pages/MainPage/index.ts @@ -0,0 +1 @@ +export { default } from './MainPage' diff --git a/src/components/pages/index.ts b/src/components/pages/index.ts new file mode 100644 index 0000000..13c908d --- /dev/null +++ b/src/components/pages/index.ts @@ -0,0 +1 @@ +export { default as MainPage } from './MainPage'