generated from Real-Dev-Squad/website-template
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
208 additions
and
77 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -35,4 +35,4 @@ jobs: | |
run: yarn format:check | ||
|
||
- name: Test check | ||
run: yarn test -u | ||
run: yarn test |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,7 +7,6 @@ | |
|
||
# testing | ||
/coverage | ||
./__tests__/__snapshots__ | ||
|
||
# next.js | ||
/.next/ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
import React from 'react'; | ||
import { render, screen, waitFor } from '@testing-library/react'; | ||
import Toast from '../../src/components/Toast'; | ||
|
||
describe('Toast', () => { | ||
const onDismiss = jest.fn(); | ||
|
||
test('should render the toast component with the message', () => { | ||
render(<Toast message="This is a toast message" isVisible={true} timeToShow={5000} onDismiss={onDismiss} />); | ||
|
||
expect(screen.getByText('This is a toast message')).toBeInTheDocument(); | ||
}); | ||
|
||
test('should not call onDismiss function when the timeToShow is not completed', () => { | ||
render(<Toast message="This is a toast message" isVisible={true} timeToShow={5000} onDismiss={onDismiss} />); | ||
|
||
expect(onDismiss).not.toHaveBeenCalled(); | ||
}); | ||
|
||
test('should call onDismiss function when the timeToShow is completed', async () => { | ||
render(<Toast message="This is a toast message" isVisible={true} timeToShow={0} onDismiss={onDismiss} />); | ||
|
||
await waitFor(() => expect(onDismiss).toHaveBeenCalled()); | ||
}); | ||
}); |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
import Dashboard from '../../src/pages/dashboard'; | ||
import { render, screen, fireEvent, act } from '@testing-library/react'; | ||
|
||
describe('Dashboard Component', () => { | ||
const mockWriteText = jest.fn(); | ||
global.navigator.clipboard = { writeText: mockWriteText }; | ||
|
||
test('renders the Dashboard component', () => { | ||
render(<Dashboard />); | ||
const urlInput = screen.getByPlaceholderText('🔗 Enter the URL'); | ||
const generateButton = screen.getByText('Generate'); | ||
const copyButton = screen.getByTestId('copy-button'); | ||
|
||
expect(urlInput).toBeInTheDocument(); | ||
expect(generateButton).toBeInTheDocument(); | ||
expect(copyButton).toBeInTheDocument(); | ||
}); | ||
|
||
test('generates a short URL when clicking the Generate button', () => { | ||
render(<Dashboard />); | ||
const generateButton = screen.getByText('Generate'); | ||
const shortUrlInput = screen.getByPlaceholderText('Copy the URL'); | ||
|
||
fireEvent.click(generateButton); | ||
const shortUrlValue = shortUrlInput.value; | ||
|
||
expect(shortUrlValue).toMatch(/^https:\/\/rds\.li\/[a-zA-Z0-9]+$/); | ||
}); | ||
|
||
it('should have two inputs and two buttons', () => { | ||
render(<Dashboard />); | ||
|
||
const urlInput = screen.getByPlaceholderText('🔗 Enter the URL'); | ||
expect(urlInput).toBeInTheDocument(); | ||
const shortUrlInput = screen.getByPlaceholderText('Copy the URL'); | ||
expect(shortUrlInput).toBeInTheDocument(); | ||
|
||
const generateButton = screen.getByText('Generate'); | ||
expect(generateButton).toBeInTheDocument(); | ||
|
||
const copyButton = screen.getByTestId('copy-button'); | ||
expect(copyButton).toBeInTheDocument(); | ||
}); | ||
|
||
it('should get the value from the input box', () => { | ||
render(<Dashboard />); | ||
const urlInput = screen.getByPlaceholderText('🔗 Enter the URL'); | ||
fireEvent.change(urlInput, { target: { value: 'https://www.google.com' } }); | ||
expect(urlInput.value).toBe('https://www.google.com'); | ||
}); | ||
|
||
test('should generate the short url when clicking the generate button', () => { | ||
render(<Dashboard />); | ||
const generateButton = screen.getByText('Generate'); | ||
fireEvent.click(generateButton); | ||
const shortUrlInput = screen.getByPlaceholderText('Copy the URL'); | ||
const shortUrlValue = shortUrlInput.value; | ||
expect(shortUrlValue).toMatch(/^https:\/\/rds\.li\/[a-zA-Z0-9]+$/); | ||
}); | ||
|
||
it('should copy the short url when clicking the copy button', () => { | ||
render(<Dashboard />); | ||
const generateButton = screen.getByText('Generate'); | ||
fireEvent.click(generateButton); | ||
const shortUrlInput = screen.getByPlaceholderText('Copy the URL'); | ||
const shortUrlValue = shortUrlInput.value; | ||
expect(shortUrlValue).toMatch(/^https:\/\/rds\.li\/[a-zA-Z0-9]+$/); | ||
const copyButton = screen.getByTestId('copy-button'); | ||
fireEvent.click(copyButton); | ||
expect(mockWriteText).toHaveBeenCalledWith(shortUrlValue); | ||
}); | ||
|
||
test('should show toast message when clicking the copy button', () => { | ||
render(<Dashboard />); | ||
const copyButton = screen.getByTestId('copy-button'); | ||
fireEvent.click(copyButton); | ||
const toast = screen.getByTestId('toast'); | ||
expect(toast).toBeInTheDocument(); | ||
}); | ||
|
||
test('should not show toast message when not clicking the copy button', () => { | ||
render(<Dashboard />); | ||
const toast = screen.queryByTestId('toast'); | ||
expect(toast).not.toBeInTheDocument(); | ||
}); | ||
|
||
test('should not show toast message after 3 seconds', async () => { | ||
jest.useFakeTimers(); | ||
render(<Dashboard />); | ||
const copyButton = screen.getByTestId('copy-button'); | ||
fireEvent.click(copyButton); | ||
const toast = screen.getByTestId('toast'); | ||
expect(toast).toBeInTheDocument(); | ||
await act(async () => { | ||
jest.advanceTimersByTime(3000); | ||
}); | ||
render(<Dashboard />); | ||
expect(toast).not.toBeInTheDocument(); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import React, { useEffect } from 'react'; | ||
|
||
interface ToastProps { | ||
message: string; | ||
isVisible: boolean; | ||
timeToShow: number; | ||
onDismiss: () => void; | ||
} | ||
|
||
const Toast: React.FC<ToastProps> = ({ message, isVisible, timeToShow, onDismiss }) => { | ||
useEffect(() => { | ||
if (isVisible) { | ||
const timer = setTimeout(() => { | ||
onDismiss(); | ||
}, timeToShow); | ||
|
||
return () => { | ||
clearTimeout(timer); | ||
}; | ||
} | ||
}, [isVisible, timeToShow, onDismiss]); | ||
|
||
return isVisible ? ( | ||
<div | ||
className="fixed bottom-10 left-1/2 transform -translate-x-1/2 bg-gray-900 text-white px-4 py-2 rounded-lg border-2 border-cyan-100" | ||
data-testid="toast" | ||
> | ||
{message} | ||
</div> | ||
) : null; | ||
}; | ||
|
||
export default Toast; |
Oops, something went wrong.