Skip to content

Commit 7abf6b2

Browse files
authored
chore: Update services/selfHosted tests to Vitest (#3307)
1 parent 34be384 commit 7abf6b2

7 files changed

+107
-131
lines changed
File renamed without changes.

src/services/selfHosted/useSelfHostedCurrentUser.spec.js renamed to src/services/selfHosted/useSelfHostedCurrentUser.test.jsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
22
import { renderHook, waitFor } from '@testing-library/react'
3-
import { rest } from 'msw'
4-
import { setupServer } from 'msw/node'
3+
import { http, HttpResponse } from 'msw2'
4+
import { setupServer } from 'msw2/node'
55
import { MemoryRouter, Route } from 'react-router-dom'
66

77
import { useSelfHostedCurrentUser } from './useSelfHostedCurrentUser'
@@ -27,36 +27,36 @@ const wrapper = ({ children }) => (
2727
)
2828

2929
const server = setupServer()
30-
beforeAll(() => server.listen())
30+
beforeAll(() => {
31+
server.listen()
32+
})
33+
3134
beforeEach(() => {
3235
server.resetHandlers()
3336
queryClient.clear()
3437
})
35-
afterAll(() => server.close())
38+
39+
afterAll(() => {
40+
server.close()
41+
})
3642

3743
describe('useSelfHostedCurrentUser', () => {
3844
function setup() {
3945
server.use(
40-
rest.get('/internal/users/current', (req, res, ctx) =>
41-
res(ctx.status(200), ctx.json(user))
42-
)
46+
http.get('/internal/users/current', (info) => {
47+
return HttpResponse.json(user)
48+
})
4349
)
4450
}
4551

4652
describe('when called', () => {
4753
describe('when data is loaded', () => {
48-
beforeEach(() => {
49-
setup()
50-
})
51-
5254
it('returns the user info', async () => {
55+
setup()
5356
const { result } = renderHook(() => useSelfHostedCurrentUser(), {
5457
wrapper,
5558
})
5659

57-
await waitFor(() => result.current.isFetching)
58-
await waitFor(() => !result.current.isFetching)
59-
6060
await waitFor(() => expect(result.current.data).toEqual(user))
6161
})
6262
})

src/services/selfHosted/useSelfHostedHasAdmins.spec.js renamed to src/services/selfHosted/useSelfHostedHasAdmins.test.jsx

Lines changed: 15 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
22
import { renderHook, waitFor } from '@testing-library/react'
3-
import { graphql } from 'msw'
4-
import { setupServer } from 'msw/node'
3+
import { graphql, HttpResponse } from 'msw2'
4+
import { setupServer } from 'msw2/node'
55

66
import { useSelfHostedHasAdmins } from './useSelfHostedHasAdmins'
77

@@ -13,55 +13,36 @@ const wrapper = ({ children }) => (
1313
)
1414

1515
const server = setupServer()
16-
beforeAll(() => server.listen())
16+
beforeAll(() => {
17+
server.listen()
18+
})
19+
1720
beforeEach(() => {
1821
server.resetHandlers()
1922
queryClient.clear()
2023
})
21-
afterAll(() => server.close())
24+
25+
afterAll(() => {
26+
server.close()
27+
})
2228

2329
describe('useSelfHostedHasAdmins', () => {
2430
function setup({ data }) {
2531
server.use(
26-
graphql.query('HasAdmins', (req, res, ctx) =>
27-
res(ctx.status(200), ctx.data(data))
28-
)
32+
graphql.query('HasAdmins', (info) => {
33+
return HttpResponse.json({ data })
34+
})
2935
)
3036
}
3137

3238
describe('when called', () => {
33-
beforeEach(() => {
34-
setup({ data: { config: { hasAdmins: true } } })
35-
})
36-
37-
it('returns isLoading', () => {
38-
const { result } = renderHook(
39-
() => useSelfHostedHasAdmins({ provider: 'gl' }),
40-
{
41-
wrapper,
42-
}
43-
)
44-
45-
expect(result.current.isLoading).toBeTruthy()
46-
})
47-
})
48-
49-
describe('when data is loaded', () => {
50-
beforeEach(async () => {
51-
setup({ data: { config: { hasAdmins: true } } })
52-
})
53-
5439
it('returns the user info', async () => {
40+
setup({ data: { config: { hasAdmins: true } } })
5541
const { result } = renderHook(
5642
() => useSelfHostedHasAdmins({ provider: 'gl' }),
57-
{
58-
wrapper,
59-
}
43+
{ wrapper }
6044
)
6145

62-
await waitFor(() => result.current.isFetching)
63-
await waitFor(() => !result.current.isFetching)
64-
6546
await waitFor(() => expect(result.current.data).toEqual(true))
6647
})
6748
})

src/services/selfHosted/useSelfHostedSeatsAndLicense.spec.tsx renamed to src/services/selfHosted/useSelfHostedSeatsAndLicense.test.tsx

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
22
import { renderHook, waitFor } from '@testing-library/react'
3-
import { graphql } from 'msw'
4-
import { setupServer } from 'msw/node'
3+
import { graphql, HttpResponse } from 'msw2'
4+
import { setupServer } from 'msw2/node'
5+
import { type MockInstance } from 'vitest'
56

67
import { useSelfHostedSeatsAndLicense } from './useSelfHostedSeatsAndLicense'
78

89
const mockSelfHostedLicense = {
910
config: {
1011
seatsUsed: 5,
1112
seatsLimit: 30,
12-
selfHostedLicense: {
13-
expirationDate: '2020-05-09T00:00:00',
14-
},
13+
selfHostedLicense: { expirationDate: '2020-05-09T00:00:00' },
1514
},
1615
}
1716

@@ -20,12 +19,12 @@ const mockUnsuccessfulParseError = {}
2019
const queryClient = new QueryClient({
2120
defaultOptions: { queries: { retry: false } },
2221
})
23-
const server = setupServer()
2422

2523
const wrapper: React.FC<React.PropsWithChildren> = ({ children }) => (
2624
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
2725
)
2826

27+
const server = setupServer()
2928
beforeAll(() => {
3029
server.listen()
3130
})
@@ -46,11 +45,11 @@ interface SetupArgs {
4645
describe('useSelfHostedSeatsAndLicense', () => {
4746
function setup({ isUnsuccessfulParseError = false }: SetupArgs) {
4847
server.use(
49-
graphql.query('SelfHostedSeatsAndLicense', (req, res, ctx) => {
48+
graphql.query('SelfHostedSeatsAndLicense', (info) => {
5049
if (isUnsuccessfulParseError) {
51-
return res(ctx.status(200), ctx.data(mockUnsuccessfulParseError))
50+
return HttpResponse.json({ data: mockUnsuccessfulParseError })
5251
} else {
53-
return res(ctx.status(200), ctx.data(mockSelfHostedLicense))
52+
return HttpResponse.json({ data: mockSelfHostedLicense })
5453
}
5554
})
5655
)
@@ -62,14 +61,10 @@ describe('useSelfHostedSeatsAndLicense', () => {
6261
it('returns the license details', async () => {
6362
setup({})
6463
const { result } = renderHook(
65-
() =>
66-
useSelfHostedSeatsAndLicense({
67-
provider: 'gh',
68-
}),
64+
() => useSelfHostedSeatsAndLicense({ provider: 'gh' }),
6965
{ wrapper }
7066
)
7167

72-
await waitFor(() => result.current.isSuccess)
7368
await waitFor(() =>
7469
expect(result.current.data).toEqual({
7570
seatsUsed: 5,
@@ -84,32 +79,25 @@ describe('useSelfHostedSeatsAndLicense', () => {
8479
})
8580

8681
describe('unsuccessful parse of zod schema', () => {
87-
beforeEach(() => {
88-
jest.spyOn(console, 'error')
82+
let consoleSpy: MockInstance
83+
beforeAll(() => {
84+
consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {})
8985
})
9086

91-
afterEach(() => {
92-
jest.resetAllMocks()
87+
afterAll(() => {
88+
consoleSpy.mockRestore()
9389
})
9490

9591
it('throws a 404', async () => {
9692
setup({ isUnsuccessfulParseError: true })
9793
const { result } = renderHook(
98-
() =>
99-
useSelfHostedSeatsAndLicense({
100-
provider: 'gh',
101-
}),
102-
{
103-
wrapper,
104-
}
94+
() => useSelfHostedSeatsAndLicense({ provider: 'gh' }),
95+
{ wrapper }
10596
)
10697

107-
await waitFor(() => expect(result.current.isError).toBeTruthy())
10898
await waitFor(() =>
10999
expect(result.current.error).toEqual(
110-
expect.objectContaining({
111-
status: 404,
112-
})
100+
expect.objectContaining({ status: 404 })
113101
)
114102
)
115103
})

src/services/selfHosted/useSelfHostedSeatsConfig.spec.js renamed to src/services/selfHosted/useSelfHostedSeatsConfig.test.jsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
22
import { renderHook, waitFor } from '@testing-library/react'
3-
import { graphql } from 'msw'
4-
import { setupServer } from 'msw/node'
3+
import { graphql, HttpResponse } from 'msw2'
4+
import { setupServer } from 'msw2/node'
55
import { MemoryRouter, Route } from 'react-router-dom'
66

77
import { useSelfHostedSeatsConfig } from './useSelfHostedSeatsConfig'
@@ -25,35 +25,35 @@ const wrapper = ({ children }) => (
2525
)
2626

2727
const server = setupServer()
28-
beforeAll(() => server.listen())
28+
beforeAll(() => {
29+
server.listen()
30+
})
31+
2932
beforeEach(() => {
3033
server.resetHandlers()
3134
queryClient.clear()
3235
})
33-
afterAll(() => server.close())
36+
37+
afterAll(() => {
38+
server.close()
39+
})
3440

3541
describe('useSelfHostedSeatsConfig', () => {
3642
function setup() {
3743
server.use(
38-
graphql.query('Seats', (req, res, ctx) =>
39-
res(ctx.status(200), ctx.data(mockData))
40-
)
44+
graphql.query('Seats', (req, res, ctx) => {
45+
return HttpResponse.json({ data: mockData })
46+
})
4147
)
4248
}
4349

4450
describe('when called', () => {
45-
beforeEach(() => {
46-
setup()
47-
})
48-
4951
it('returns data', async () => {
52+
setup()
5053
const { result } = renderHook(() => useSelfHostedSeatsConfig(), {
5154
wrapper,
5255
})
5356

54-
await waitFor(() => result.current.isFetching)
55-
await waitFor(() => !result.current.isFetching)
56-
5757
await waitFor(() =>
5858
expect(result.current.data).toStrictEqual({
5959
seatsUsed: 5,

src/services/selfHosted/useSelfHostedSettings.spec.tsx renamed to src/services/selfHosted/useSelfHostedSettings.test.tsx

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
22
import { renderHook, waitFor } from '@testing-library/react'
3-
import { graphql } from 'msw'
4-
import { setupServer } from 'msw/node'
3+
import { graphql, HttpResponse } from 'msw2'
4+
import { setupServer } from 'msw2/node'
55
import { MemoryRouter, Route } from 'react-router-dom'
6+
import { type MockInstance } from 'vitest'
67

78
import { useSelfHostedSettings } from './useSelfHostedSettings'
89

910
const queryClient = new QueryClient({
1011
defaultOptions: { queries: { retry: false } },
1112
})
12-
const server = setupServer()
1313

1414
const mockResponse = {
1515
config: {
@@ -27,6 +27,7 @@ const wrapper: React.FC<React.PropsWithChildren> = ({ children }) => (
2727
</QueryClientProvider>
2828
)
2929

30+
const server = setupServer()
3031
beforeAll(() => {
3132
server.listen()
3233
})
@@ -43,11 +44,11 @@ afterAll(() => {
4344
describe('useSelfHostedSettings', () => {
4445
function setup({ invalidResponse = false }) {
4546
server.use(
46-
graphql.query('SelfHostedSettings', (req, res, ctx) => {
47+
graphql.query('SelfHostedSettings', (info) => {
4748
if (invalidResponse) {
48-
return res(ctx.status(200), ctx.data({}))
49+
return HttpResponse.json({})
4950
}
50-
return res(ctx.status(200), ctx.data(mockResponse))
51+
return HttpResponse.json({ data: mockResponse })
5152
})
5253
)
5354
}
@@ -57,9 +58,6 @@ describe('useSelfHostedSettings', () => {
5758
setup({})
5859
const { result } = renderHook(() => useSelfHostedSettings(), { wrapper })
5960

60-
await waitFor(() => result.current.isFetching)
61-
await waitFor(() => !result.current.isFetching)
62-
6361
await waitFor(() =>
6462
expect(result.current.data).toStrictEqual({
6563
planAutoActivate: true,
@@ -71,8 +69,14 @@ describe('useSelfHostedSettings', () => {
7169
})
7270

7371
describe('invalid response', () => {
72+
let consoleSpy: MockInstance
73+
7474
beforeAll(() => {
75-
console.error = () => {}
75+
consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {})
76+
})
77+
78+
afterAll(() => {
79+
consoleSpy.mockRestore()
7680
})
7781

7882
it('rejects with 404', async () => {
@@ -81,12 +85,13 @@ describe('useSelfHostedSettings', () => {
8185
wrapper,
8286
})
8387

84-
await waitFor(() => expect(result.current.isError).toBeTruthy())
85-
expect(result.current.error).toEqual(
86-
expect.objectContaining({
87-
status: 404,
88-
dev: 'useSelfHostedSettings - 404 schema parsing failed',
89-
})
88+
await waitFor(() =>
89+
expect(result.current.error).toEqual(
90+
expect.objectContaining({
91+
status: 404,
92+
dev: 'useSelfHostedSettings - 404 schema parsing failed',
93+
})
94+
)
9095
)
9196
})
9297
})

0 commit comments

Comments
 (0)