From 48feb0d5274505f0cf08ad0c5d67bf6dce7ac4d3 Mon Sep 17 00:00:00 2001 From: Sunny Sahsi Date: Sun, 12 Nov 2023 00:35:49 +0530 Subject: [PATCH] test: add test for dashboard page --- __tests__/pages/dashboard.test.tsx | 37 ++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 __tests__/pages/dashboard.test.tsx diff --git a/__tests__/pages/dashboard.test.tsx b/__tests__/pages/dashboard.test.tsx new file mode 100644 index 0000000..0168c31 --- /dev/null +++ b/__tests__/pages/dashboard.test.tsx @@ -0,0 +1,37 @@ +import { fireEvent, render, screen, waitFor } from '@testing-library/react'; + +import Dashboard from '../../src/pages/dashboard'; +import React from 'react'; +import fetchMock from 'jest-fetch-mock'; + +describe('Dashboard', () => { + beforeEach(() => { + fetchMock.resetMocks(); + }); + + const mockWriteText = jest.fn(); + global.navigator.clipboard = { writeText: mockWriteText }; + + it('renders without crashing', () => { + render(); + expect(screen.getByText('URL Shortener')).toBeInTheDocument(); + }); + + it('displays a message when no URLs are found', async () => { + fetchMock.mockResponseOnce(JSON.stringify({ urls: [] })); + render(); + await waitFor(() => { + expect(screen.getByText('No URLs found')).toBeInTheDocument(); + }); + }); + + it('navigates to create page when "Create one" link is clicked', async () => { + render(); + const createLink = screen.getByText('Create one'); + fireEvent.click(createLink); + + await waitFor(() => { + expect(screen.getByText('URL Shortener')).toBeInTheDocument(); + }); + }); +});