1
- import { act , render , screen , waitFor } from '@testing-library/react'
2
- import React from 'react'
3
- import { MemoryRouter , Route , Routes } from 'react-router-dom'
1
+ import { act , screen , waitFor } from '@testing-library/react'
2
+ import { render } from 'wrappers/testUtil'
4
3
import UserDetailsPage from 'pages/UserDetails'
5
4
import '@testing-library/jest-dom'
6
5
@@ -34,16 +33,6 @@ const mockUser = {
34
33
created_at : 1723002473 ,
35
34
}
36
35
37
- const renderWithRouter = ( ui : React . ReactElement ) => {
38
- return render (
39
- < MemoryRouter initialEntries = { [ '/user/testuser' ] } >
40
- < Routes >
41
- < Route path = "/user/:login" element = { ui } />
42
- </ Routes >
43
- </ MemoryRouter >
44
- )
45
- }
46
-
47
36
describe ( 'UserDetailsPage' , ( ) => {
48
37
const { fetchAlgoliaData } = require ( 'api/fetchAlgoliaData' )
49
38
@@ -54,7 +43,7 @@ describe('UserDetailsPage', () => {
54
43
test ( 'renders loading spinner initially' , async ( ) => {
55
44
fetchAlgoliaData . mockImplementation ( ( ) => new Promise ( ( ) => { } ) )
56
45
await act ( async ( ) => {
57
- renderWithRouter ( < UserDetailsPage /> )
46
+ render ( < UserDetailsPage /> , { route : '/user/testuser' } )
58
47
} )
59
48
const loadingSpinner = screen . getAllByAltText ( 'Loading indicator' )
60
49
await waitFor ( ( ) => {
@@ -66,7 +55,7 @@ describe('UserDetailsPage', () => {
66
55
fetchAlgoliaData . mockResolvedValue ( { hits : [ mockUser ] } )
67
56
68
57
await act ( async ( ) => {
69
- renderWithRouter ( < UserDetailsPage /> )
58
+ render ( < UserDetailsPage /> , { route : '/user/testuser' } )
70
59
} )
71
60
72
61
// Wait for the loading state to finish
@@ -87,13 +76,14 @@ describe('UserDetailsPage', () => {
87
76
fetchAlgoliaData . mockResolvedValue ( { hits : [ ] } )
88
77
89
78
await act ( async ( ) => {
90
- renderWithRouter ( < UserDetailsPage /> )
79
+ render ( < UserDetailsPage /> , { route : '/user/testuser' } )
91
80
} )
92
81
93
82
await waitFor ( ( ) => {
94
83
expect ( screen . getByText ( 'User not found' ) ) . toBeInTheDocument ( )
95
84
} )
96
85
} )
86
+
97
87
test ( 'logs error to logger when fetchUserData fails' , async ( ) => {
98
88
const { fetchAlgoliaData } = require ( 'api/fetchAlgoliaData' )
99
89
const logger = require ( 'utils/logger' )
@@ -102,7 +92,7 @@ describe('UserDetailsPage', () => {
102
92
fetchAlgoliaData . mockRejectedValueOnce ( new Error ( 'Test fetch error' ) )
103
93
104
94
await act ( async ( ) => {
105
- renderWithRouter ( < UserDetailsPage /> )
95
+ render ( < UserDetailsPage /> , { route : '/user/testuser' } )
106
96
} )
107
97
108
98
await waitFor ( ( ) => {
0 commit comments