Skip to content

Commit 729b0ce

Browse files
chore: Migrate useCommitHeaderDataTeam to TS Query V5 (#3549)
1 parent 1559961 commit 729b0ce

File tree

5 files changed

+104
-62
lines changed

5 files changed

+104
-62
lines changed

src/pages/CommitDetailPage/Header/HeaderTeam/HeaderTeam.jsx

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { useSuspenseQuery as useSuspenseQueryV5 } from '@tanstack/react-queryV5'
12
import { useParams } from 'react-router-dom'
23

34
import { formatTimeToNow } from 'shared/utils/dates'
@@ -8,20 +9,22 @@ import Icon from 'ui/Icon'
89
import TotalsNumber from 'ui/TotalsNumber'
910
import TruncatedMessage from 'ui/TruncatedMessage/TruncatedMessage'
1011

11-
import { useCommitHeaderDataTeam } from './hooks'
12+
import { CommitHeaderDataTeamQueryOpts } from './queries/CommitHeaderDataTeamQueryOpts'
1213

1314
import PullLabel from '../PullLabel'
1415

1516
function HeaderTeam() {
1617
const { provider, owner, repo, commit: commitSha } = useParams()
1718
const shortSHA = commitSha?.slice(0, 7)
1819

19-
const { data: headerData } = useCommitHeaderDataTeam({
20-
provider,
21-
owner,
22-
repo,
23-
commitId: commitSha,
24-
})
20+
const { data: headerData } = useSuspenseQueryV5(
21+
CommitHeaderDataTeamQueryOpts({
22+
provider,
23+
owner,
24+
repo,
25+
commitId: commitSha,
26+
})
27+
)
2528
const commit = headerData?.commit
2629

2730
const providerPullUrl = getProviderPullURL({

src/pages/CommitDetailPage/Header/HeaderTeam/HeaderTeam.test.jsx

+27-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
2+
import {
3+
QueryClientProvider as QueryClientProviderV5,
4+
QueryClient as QueryClientV5,
5+
} from '@tanstack/react-queryV5'
26
import { render, screen, waitFor } from '@testing-library/react'
37
import { graphql, HttpResponse } from 'msw'
48
import { setupServer } from 'msw/node'
9+
import { Suspense } from 'react'
510
import { MemoryRouter, Route } from 'react-router-dom'
611

712
import HeaderTeam from './HeaderTeam'
@@ -43,25 +48,39 @@ const mockData = (pullId = null) => ({
4348
},
4449
})
4550

51+
const server = setupServer()
4652
const queryClient = new QueryClient({
4753
defaultOptions: { queries: { retry: false } },
4854
})
49-
const server = setupServer()
55+
const queryClientV5 = new QueryClientV5({
56+
defaultOptions: { queries: { retry: false } },
57+
})
5058

5159
const wrapper = ({ children }) => (
52-
<QueryClientProvider client={queryClient}>
53-
<MemoryRouter initialEntries={['/gh/codecov/test-repo/commit/id-1']}>
54-
<Route path="/:provider/:owner/:repo/commit/:commit">{children}</Route>
55-
</MemoryRouter>
56-
</QueryClientProvider>
60+
<QueryClientProviderV5 client={queryClientV5}>
61+
<QueryClientProvider client={queryClient}>
62+
<MemoryRouter initialEntries={['/gh/codecov/test-repo/commit/id-1']}>
63+
<Route path="/:provider/:owner/:repo/commit/:commit">
64+
<Suspense fallback={<div>Loading</div>}>{children}</Suspense>
65+
</Route>
66+
</MemoryRouter>
67+
</QueryClientProvider>
68+
</QueryClientProviderV5>
5769
)
5870

59-
beforeAll(() => server.listen())
71+
beforeAll(() => {
72+
server.listen()
73+
})
74+
6075
afterEach(() => {
6176
queryClient.clear()
77+
queryClientV5.clear()
6278
server.resetHandlers()
6379
})
64-
afterAll(() => server.close())
80+
81+
afterAll(() => {
82+
server.close()
83+
})
6584

6685
describe('HeaderTeam', () => {
6786
function setup(pullId = 1234) {

src/pages/CommitDetailPage/Header/HeaderTeam/hooks/index.ts

-1
This file was deleted.

src/pages/CommitDetailPage/Header/HeaderTeam/hooks/useCommitHeaderDataTeam.test.tsx src/pages/CommitDetailPage/Header/HeaderTeam/queries/CommitHeaderDataTeamQueryOpts.test.tsx

+54-38
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
1+
import {
2+
QueryClientProvider as QueryClientProviderV5,
3+
QueryClient as QueryClientV5,
4+
useQuery as useQueryV5,
5+
} from '@tanstack/react-queryV5'
26
import { renderHook, waitFor } from '@testing-library/react'
37
import { graphql, HttpResponse } from 'msw'
48
import { setupServer } from 'msw/node'
59

6-
import { useCommitHeaderDataTeam } from './useCommitHeaderDataTeam'
10+
import { CommitHeaderDataTeamQueryOpts } from './CommitHeaderDataTeamQueryOpts'
711

812
const mockRepository = {
913
owner: {
@@ -54,21 +58,23 @@ const mockNullOwner = {
5458

5559
const mockUnsuccessfulParseError = {}
5660

57-
const queryClient = new QueryClient({
58-
defaultOptions: { queries: { retry: false, useErrorBoundary: false } },
59-
})
6061
const server = setupServer()
62+
const queryClientV5 = new QueryClientV5({
63+
defaultOptions: { queries: { retry: false } },
64+
})
6165

6266
const wrapper: React.FC<React.PropsWithChildren> = ({ children }) => (
63-
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
67+
<QueryClientProviderV5 client={queryClientV5}>
68+
{children}
69+
</QueryClientProviderV5>
6470
)
6571

6672
beforeAll(() => {
6773
server.listen()
6874
})
6975

7076
afterEach(() => {
71-
queryClient.clear()
77+
queryClientV5.clear()
7278
server.resetHandlers()
7379
})
7480

@@ -83,7 +89,7 @@ interface SetupArgs {
8389
isNullOwner?: boolean
8490
}
8591

86-
describe('useCommitHeaderDataTeam', () => {
92+
describe('CommitHeaderDataTeamQueryOpts', () => {
8793
function setup({
8894
isNotFoundError = false,
8995
isOwnerNotActivatedError = false,
@@ -115,12 +121,14 @@ describe('useCommitHeaderDataTeam', () => {
115121

116122
const { result } = renderHook(
117123
() =>
118-
useCommitHeaderDataTeam({
119-
provider: 'gh',
120-
owner: 'codecov',
121-
repo: 'test-repo',
122-
commitId: 'id-1',
123-
}),
124+
useQueryV5(
125+
CommitHeaderDataTeamQueryOpts({
126+
provider: 'gh',
127+
owner: 'codecov',
128+
repo: 'test-repo',
129+
commitId: 'id-1',
130+
})
131+
),
124132
{ wrapper }
125133
)
126134

@@ -158,12 +166,14 @@ describe('useCommitHeaderDataTeam', () => {
158166

159167
const { result } = renderHook(
160168
() =>
161-
useCommitHeaderDataTeam({
162-
provider: 'gh',
163-
owner: 'codecov',
164-
repo: 'test-repo',
165-
commitId: 'id-1',
166-
}),
169+
useQueryV5(
170+
CommitHeaderDataTeamQueryOpts({
171+
provider: 'gh',
172+
owner: 'codecov',
173+
repo: 'test-repo',
174+
commitId: 'id-1',
175+
})
176+
),
167177
{ wrapper }
168178
)
169179

@@ -197,12 +207,14 @@ describe('useCommitHeaderDataTeam', () => {
197207

198208
const { result } = renderHook(
199209
() =>
200-
useCommitHeaderDataTeam({
201-
provider: 'gh',
202-
owner: 'codecov',
203-
repo: 'test-repo',
204-
commitId: 'id-1',
205-
}),
210+
useQueryV5(
211+
CommitHeaderDataTeamQueryOpts({
212+
provider: 'gh',
213+
owner: 'codecov',
214+
repo: 'test-repo',
215+
commitId: 'id-1',
216+
})
217+
),
206218
{ wrapper }
207219
)
208220

@@ -233,12 +245,14 @@ describe('useCommitHeaderDataTeam', () => {
233245

234246
const { result } = renderHook(
235247
() =>
236-
useCommitHeaderDataTeam({
237-
provider: 'gh',
238-
owner: 'codecov',
239-
repo: 'test-repo',
240-
commitId: 'id-1',
241-
}),
248+
useQueryV5(
249+
CommitHeaderDataTeamQueryOpts({
250+
provider: 'gh',
251+
owner: 'codecov',
252+
repo: 'test-repo',
253+
commitId: 'id-1',
254+
})
255+
),
242256
{ wrapper }
243257
)
244258

@@ -269,12 +283,14 @@ describe('useCommitHeaderDataTeam', () => {
269283

270284
const { result } = renderHook(
271285
() =>
272-
useCommitHeaderDataTeam({
273-
provider: 'gh',
274-
owner: 'codecov',
275-
repo: 'test-repo',
276-
commitId: 'id-1',
277-
}),
286+
useQueryV5(
287+
CommitHeaderDataTeamQueryOpts({
288+
provider: 'gh',
289+
owner: 'codecov',
290+
repo: 'test-repo',
291+
commitId: 'id-1',
292+
})
293+
),
278294
{ wrapper }
279295
)
280296

src/pages/CommitDetailPage/Header/HeaderTeam/hooks/useCommitHeaderDataTeam.tsx src/pages/CommitDetailPage/Header/HeaderTeam/queries/CommitHeaderDataTeamQueryOpts.tsx

+13-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useQuery } from '@tanstack/react-query'
1+
import { queryOptions as queryOptionsV5 } from '@tanstack/react-queryV5'
22
import { z } from 'zod'
33

44
import {
@@ -14,6 +14,7 @@ import {
1414
RepoOwnerNotActivatedErrorSchema,
1515
} from 'services/repo'
1616
import Api from 'shared/api'
17+
import { rejectNetworkError } from 'shared/api/helpers'
1718
import A from 'ui/A'
1819

1920
const CoverageObjSchema = z.object({
@@ -130,20 +131,20 @@ const query = `
130131
}
131132
`
132133

133-
interface UseCommitHeaderDataTeamArgs {
134+
interface CommitHeaderDataTeamQueryArgs {
134135
provider: string
135136
owner: string
136137
repo: string
137138
commitId: string
138139
}
139140

140-
export const useCommitHeaderDataTeam = ({
141+
export const CommitHeaderDataTeamQueryOpts = ({
141142
provider,
142143
owner,
143144
repo,
144145
commitId,
145-
}: UseCommitHeaderDataTeamArgs) =>
146-
useQuery({
146+
}: CommitHeaderDataTeamQueryArgs) =>
147+
queryOptionsV5({
147148
queryKey: [
148149
'CommitPageHeaderDataTeam',
149150
provider,
@@ -167,23 +168,26 @@ export const useCommitHeaderDataTeam = ({
167168
const parsedData = CommitHeaderDataTeamSchema.safeParse(res?.data)
168169

169170
if (!parsedData.success) {
170-
return Promise.reject({
171+
return rejectNetworkError({
171172
status: 404,
172173
data: {},
174+
dev: 'CommitHeaderDataTeamQueryOpts - 404 Failed to parse schema',
175+
error: parsedData.error,
173176
})
174177
}
175178

176179
const data = parsedData.data
177180

178181
if (data?.owner?.repository?.__typename === 'NotFoundError') {
179-
return Promise.reject({
182+
return rejectNetworkError({
180183
status: 404,
181184
data: {},
185+
dev: 'CommitHeaderDataTeamQueryOpts - 404 Not Found',
182186
})
183187
}
184188

185189
if (data?.owner?.repository?.__typename === 'OwnerNotActivatedError') {
186-
return Promise.reject({
190+
return rejectNetworkError({
187191
status: 403,
188192
data: {
189193
detail: (
@@ -195,6 +199,7 @@ export const useCommitHeaderDataTeam = ({
195199
</p>
196200
),
197201
},
202+
dev: 'CommitHeaderDataTeamQueryOpts - 403 Owner Not Activated',
198203
})
199204
}
200205

0 commit comments

Comments
 (0)