Skip to content

Commit

Permalink
tests: reproducer for #2198
Browse files Browse the repository at this point in the history
  • Loading branch information
schiller-manuel committed Aug 27, 2024
1 parent c03819f commit edc4b8b
Showing 1 changed file with 94 additions and 0 deletions.
94 changes: 94 additions & 0 deletions packages/react-router/tests/loaders.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -224,3 +224,97 @@ test('reproducer for #2053', async () => {
const fooElement = await screen.findByText('fooId: 3ΚΑΠΠΑ')
expect(fooElement).toBeInTheDocument()
})

test('reproducer for #2198 - throw error from beforeLoad upon initial load', async () => {
const rootRoute = createRootRoute({})

const indexRoute = createRoute({
getParentRoute: () => rootRoute,
path: '/',
component: () => <div>Index page</div>,
beforeLoad: () => {
throw new Error('Test!')
},
errorComponent: () => <div>indexErrorComponent</div>,
})

const routeTree = rootRoute.addChildren([indexRoute])
const router = createRouter({
routeTree,
defaultErrorComponent: () => {
return <div>defaultErrorComponent</div>
},
})

render(<RouterProvider router={router} />)

const errorElement = await screen.findByText('indexErrorComponent')
expect(errorElement).toBeInTheDocument()
})

test('throw error from loader upon initial load', async () => {
const rootRoute = createRootRoute({})

const indexRoute = createRoute({
getParentRoute: () => rootRoute,
path: '/',
component: () => <div>Index page</div>,
loader: () => {
throw new Error('Test!')
},
errorComponent: () => <div>indexErrorComponent</div>,
})

const routeTree = rootRoute.addChildren([indexRoute])
const router = createRouter({
routeTree,
defaultErrorComponent: () => {
return <div>defaultErrorComponent</div>
},
})

render(<RouterProvider router={router} />)

const errorElement = await screen.findByText('indexErrorComponent')
expect(errorElement).toBeInTheDocument()
})

test('throw error from beforeLoad when navigating to route', async () => {
const rootRoute = createRootRoute({})

const indexRoute = createRoute({
getParentRoute: () => rootRoute,
path: '/',
component: () => <div><h1>Index page</h1> <Link to="/foo">link to foo</Link></div>,
errorComponent: () => <div>indexErrorComponent</div>,
})

const fooRoute = createRoute({
getParentRoute: () => rootRoute,
path: '/foo',
component: () => <div>Foo page</div>,
beforeLoad: () => {
throw new Error('Test!')
},
errorComponent: () => <div>fooErrorComponent</div>,
})

const routeTree = rootRoute.addChildren([indexRoute, fooRoute])
const router = createRouter({
routeTree,
defaultErrorComponent: () => {
return <div>defaultErrorComponent</div>
},
})

render(<RouterProvider router={router} />)

const linkToFoo = await screen.findByRole('link', { name: 'link to foo' })

expect(linkToFoo).toBeInTheDocument()

fireEvent.click(linkToFoo)

const indexElement = await screen.findByText('fooErrorComponent')
expect(indexElement).toBeInTheDocument()
})

0 comments on commit edc4b8b

Please sign in to comment.