♻️ refactor(App): use react router
this adds `MainPage`
This commit is contained in:
@@ -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(<App />);
|
|
||||||
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(<App />);
|
|
||||||
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(<App />);
|
|
||||||
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');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
+10
-31
@@ -1,35 +1,14 @@
|
|||||||
import { useState } from 'react'
|
import { createBrowserRouter, RouterProvider } from 'react-router-dom'
|
||||||
import reactLogo from './assets/react.svg'
|
|
||||||
import viteLogo from '/vite.svg'
|
|
||||||
import './App.css'
|
|
||||||
|
|
||||||
function App() {
|
import { MainPage } from 'components/pages'
|
||||||
const [count, setCount] = useState(0)
|
|
||||||
|
|
||||||
return (
|
const router = createBrowserRouter([
|
||||||
<>
|
{
|
||||||
<div>
|
path: '/',
|
||||||
<a href="https://vitejs.dev" target="_blank">
|
element: <MainPage />,
|
||||||
<img src={viteLogo} className="logo" alt="Vite logo" />
|
},
|
||||||
</a>
|
])
|
||||||
<a href="https://react.dev" target="_blank">
|
|
||||||
<img src={reactLogo} className="logo react" alt="React logo" />
|
const App = () => <RouterProvider router={router} />
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<h1>Vite + React</h1>
|
|
||||||
<div className="card">
|
|
||||||
<button onClick={() => setCount((count) => count + 1)}>
|
|
||||||
count is {count}
|
|
||||||
</button>
|
|
||||||
<p>
|
|
||||||
Edit <code>src/App.tsx</code> and save to test HMR
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<p className="read-the-docs">
|
|
||||||
Click on the Vite and React logos to learn more
|
|
||||||
</p>
|
|
||||||
</>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default App
|
export default App
|
||||||
|
|||||||
@@ -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(<MainPage />)
|
||||||
|
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(<MainPage />)
|
||||||
|
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(<MainPage />)
|
||||||
|
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')
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -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 (
|
||||||
|
<>
|
||||||
|
<div>
|
||||||
|
<a href="https://vitejs.dev" target="_blank">
|
||||||
|
<img src={viteLogo} className="logo" alt="Vite logo" />
|
||||||
|
</a>
|
||||||
|
<a href="https://react.dev" target="_blank">
|
||||||
|
<img src={reactLogo} className="logo react" alt="React logo" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<h1>Vite + React</h1>
|
||||||
|
<div className="card">
|
||||||
|
<button onClick={() => setCount(count => count + 1)}>count is {count}</button>
|
||||||
|
<p>
|
||||||
|
Edit <code>src/App.tsx</code> and save to test HMR
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<p className="read-the-docs">Click on the Vite and React logos to learn more</p>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default MainPage
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export { default } from './MainPage'
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export { default as MainPage } from './MainPage'
|
||||||
Reference in New Issue
Block a user