Skip to content

Commit

Permalink
feat(AuthorizedMoreNewsLink.test.tsx): add support for navigation tes…
Browse files Browse the repository at this point in the history
…ting using userEvent library

The test for AuthorizedMoreNewsLink component has been updated to use createMemoryRouter from react-router-dom instead of BrowserRouter for better testing isolation. Additionally, support for navigation testing has been added using the userEvent library to simulate a click event on the More News link and verify navigation to the Mock News Editable Page.
  • Loading branch information
ktun95 committed Aug 26, 2024
1 parent c76e10a commit 4b10422
Showing 1 changed file with 25 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,32 @@
import { render, screen } from "@testing-library/react"
import userEvent from "@testing-library/user-event"
import { describe, it, expect } from "vitest"
import { BrowserRouter } from "react-router-dom"
import { RouterProvider, createMemoryRouter } from "react-router-dom"
import { AuthorizedMoreNewsLink } from "../news/AuthorizedMoreNewsLink"

const routes = [
{
path: "/",
element: <AuthorizedMoreNewsLink />,
},
{
path: "/news/editable",
element: <div>Mock News Editable Page</div>,
},
]

const router = createMemoryRouter(routes, {
initialEntries: ["/"],
})

describe("AuthorizedMoreNewsLink", () => {
it("renders the Authorized More News link", () => {
render(
<BrowserRouter>
<AuthorizedMoreNewsLink />
</BrowserRouter>,
)
expect(screen.getByText("More News")).toBeInTheDocument()
it("renders the More News link and navigates on click", async () => {
const user = userEvent.setup()
render(<RouterProvider router={router} />)
const link = screen.getByRole("link", { name: /more news/i })
expect(link).toBeInTheDocument()

await user.click(link)
expect(screen.getByText("Mock News Editable Page")).toBeInTheDocument()
})
})

0 comments on commit 4b10422

Please sign in to comment.