Skip to content

Commit b53f724

Browse files
committed
chore: wrap components in NextIntlClientProvider for internationalization support in tests
1 parent dd845b8 commit b53f724

13 files changed

Lines changed: 206 additions & 153 deletions

File tree

packages/app/src/utils/formatDate.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,8 @@
2020
import dayjs from './dayjs'
2121

2222
export function formatDate(value: unknown): string {
23-
return value ? dayjs(String(value)).format('DD.MM.YYYY') : '—'
23+
if (!value) return '—'
24+
const str = String(value)
25+
const datePart = str.includes('T') ? str.split('T')[0] : str
26+
return dayjs(datePart).format('DD.MM.YYYY')
2427
}

packages/lib/src/components/Contact/Contact.test.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import { contactFormSchema } from '@frachtwerk/essencium-types'
2121
import { AppShell, MantineProvider } from '@mantine/core'
2222
import { render, renderHook, screen, within } from '@testing-library/react'
23+
import { NextIntlClientProvider } from 'next-intl'
2324
import { beforeAll, describe, expect, it } from 'vitest'
2425

2526
import { useZodForm } from '../../hooks'
@@ -51,11 +52,13 @@ describe('Contact', () => {
5152
const { control } = result.current
5253

5354
render(
54-
<MantineProvider>
55-
<AppShell>
56-
<Contact control={control} contactPerson={examplePerson} />,
57-
</AppShell>
58-
</MantineProvider>,
55+
<NextIntlClientProvider locale="en" messages={{}}>
56+
<MantineProvider>
57+
<AppShell>
58+
<Contact control={control} contactPerson={examplePerson} />,
59+
</AppShell>
60+
</MantineProvider>
61+
</NextIntlClientProvider>,
5962
)
6063
})
6164

packages/lib/src/components/FeedbackWidget/FeedbackWidget.test.tsx

Lines changed: 57 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import { AppShell, MantineProvider } from '@mantine/core'
2121
import { cleanup, fireEvent, render, screen } from '@testing-library/react'
22+
import { NextIntlClientProvider } from 'next-intl'
2223
import { afterEach, beforeAll, describe, expect, it, vi } from 'vitest'
2324

2425
import { FeedbackWidget } from './FeedbackWidget'
@@ -106,18 +107,20 @@ describe('FeedbackWidget', () => {
106107

107108
it('should render the button to open the feedback widget', () => {
108109
const component = render(
109-
<MantineProvider>
110-
<AppShell>
111-
<FeedbackWidget
112-
currentUser={mockedProps.user}
113-
createFeedback={mockedProps.spyFunctions.createFeedback}
114-
feedbackCreated={false}
115-
feedbackFailed={false}
116-
feedbackSending={false}
117-
createNotification={mockedProps.createNotification}
118-
/>
119-
</AppShell>
120-
</MantineProvider>,
110+
<NextIntlClientProvider locale="en" messages={{}}>
111+
<MantineProvider>
112+
<AppShell>
113+
<FeedbackWidget
114+
currentUser={mockedProps.user}
115+
createFeedback={mockedProps.spyFunctions.createFeedback}
116+
feedbackCreated={false}
117+
feedbackFailed={false}
118+
feedbackSending={false}
119+
createNotification={mockedProps.createNotification}
120+
/>
121+
</AppShell>
122+
</MantineProvider>
123+
</NextIntlClientProvider>,
121124
)
122125

123126
const openButton = screen.getByLabelText(
@@ -154,18 +157,20 @@ describe('FeedbackWidget', () => {
154157

155158
it('should render the feedback form after clicking the issue button', async () => {
156159
const component = render(
157-
<MantineProvider>
158-
<AppShell>
159-
<FeedbackWidget
160-
currentUser={mockedProps.user}
161-
createFeedback={mockedProps.spyFunctions.createFeedback}
162-
feedbackCreated={false}
163-
feedbackFailed={false}
164-
feedbackSending={false}
165-
createNotification={mockedProps.createNotification}
166-
/>
167-
</AppShell>
168-
</MantineProvider>,
160+
<NextIntlClientProvider locale="en" messages={{}}>
161+
<MantineProvider>
162+
<AppShell>
163+
<FeedbackWidget
164+
currentUser={mockedProps.user}
165+
createFeedback={mockedProps.spyFunctions.createFeedback}
166+
feedbackCreated={false}
167+
feedbackFailed={false}
168+
feedbackSending={false}
169+
createNotification={mockedProps.createNotification}
170+
/>
171+
</AppShell>
172+
</MantineProvider>
173+
</NextIntlClientProvider>,
169174
)
170175

171176
const openButton = screen.getByLabelText(
@@ -210,18 +215,20 @@ describe('FeedbackWidget', () => {
210215

211216
it('should render the success message after submitting the feedback', async () => {
212217
const renderedComponent = render(
213-
<MantineProvider>
214-
<AppShell>
215-
<FeedbackWidget
216-
currentUser={mockedProps.user}
217-
createFeedback={mockedProps.spyFunctions.createFeedback}
218-
feedbackCreated
219-
feedbackFailed={false}
220-
feedbackSending={false}
221-
createNotification={mockedProps.createNotification}
222-
/>
223-
</AppShell>
224-
</MantineProvider>,
218+
<NextIntlClientProvider locale="en" messages={{}}>
219+
<MantineProvider>
220+
<AppShell>
221+
<FeedbackWidget
222+
currentUser={mockedProps.user}
223+
createFeedback={mockedProps.spyFunctions.createFeedback}
224+
feedbackCreated
225+
feedbackFailed={false}
226+
feedbackSending={false}
227+
createNotification={mockedProps.createNotification}
228+
/>
229+
</AppShell>
230+
</MantineProvider>
231+
</NextIntlClientProvider>,
225232
)
226233

227234
const openButton = screen.getByLabelText(
@@ -248,18 +255,20 @@ describe('FeedbackWidget', () => {
248255

249256
it('should render the error message after not submitting the feedback', async () => {
250257
const renderedComponent = render(
251-
<MantineProvider>
252-
<AppShell>
253-
<FeedbackWidget
254-
currentUser={mockedProps.user}
255-
createFeedback={mockedProps.spyFunctions.createFeedback}
256-
feedbackCreated={false}
257-
feedbackFailed
258-
feedbackSending={false}
259-
createNotification={mockedProps.createNotification}
260-
/>
261-
</AppShell>
262-
</MantineProvider>,
258+
<NextIntlClientProvider locale="en" messages={{}}>
259+
<MantineProvider>
260+
<AppShell>
261+
<FeedbackWidget
262+
currentUser={mockedProps.user}
263+
createFeedback={mockedProps.spyFunctions.createFeedback}
264+
feedbackCreated={false}
265+
feedbackFailed
266+
feedbackSending={false}
267+
createNotification={mockedProps.createNotification}
268+
/>
269+
</AppShell>
270+
</MantineProvider>
271+
</NextIntlClientProvider>,
263272
)
264273

265274
const openButton = screen.getByLabelText(

packages/lib/src/components/Footer/Footer.test.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import { NavLink } from '@frachtwerk/essencium-types'
2121
import { AppShell, MantineProvider } from '@mantine/core'
2222
import { render, RenderResult, screen } from '@testing-library/react'
23+
import { NextIntlClientProvider } from 'next-intl'
2324
import { CSSProperties } from 'react'
2425
import { beforeAll, describe, expect, it, vi } from 'vitest'
2526

@@ -81,11 +82,13 @@ describe('Footer', () => {
8182
}))
8283

8384
FooterMounted = render(
84-
<MantineProvider>
85-
<AppShell>
86-
<Footer links={FOOTER_LINKS} />)
87-
</AppShell>
88-
</MantineProvider>,
85+
<NextIntlClientProvider locale="en" messages={{}}>
86+
<MantineProvider>
87+
<AppShell>
88+
<Footer links={FOOTER_LINKS} />)
89+
</AppShell>
90+
</MantineProvider>
91+
</NextIntlClientProvider>,
8992
)
9093
})
9194

packages/lib/src/components/Header/Header.test.tsx

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import { UserOutput } from '@frachtwerk/essencium-types'
2121
import { AppShell, AppShellNavbar, Box, MantineProvider } from '@mantine/core'
2222
import { render, RenderResult } from '@testing-library/react'
23+
import { NextIntlClientProvider } from 'next-intl'
2324
import { beforeAll, describe, expect, it, vi } from 'vitest'
2425

2526
import { Header } from './Header'
@@ -55,27 +56,29 @@ describe('Header.tsx', () => {
5556

5657
beforeAll(() => {
5758
HeaderMounted = render(
58-
<MantineProvider>
59-
<AppShell
60-
navbar={{
61-
width: 256,
62-
breakpoint: 'sm',
63-
collapsed: { mobile: !true },
64-
}}
65-
padding="md"
66-
>
67-
<AppShellNavbar>
68-
<Box p="md">Mock Navbar</Box>
69-
</AppShellNavbar>
59+
<NextIntlClientProvider locale="en" messages={{}}>
60+
<MantineProvider>
61+
<AppShell
62+
navbar={{
63+
width: 256,
64+
breakpoint: 'sm',
65+
collapsed: { mobile: !true },
66+
}}
67+
padding="md"
68+
>
69+
<AppShellNavbar>
70+
<Box p="md">Mock Navbar</Box>
71+
</AppShellNavbar>
7072

71-
<Header
72-
isOpen
73-
handleOpenNav={() => {}}
74-
user={MOCK_USER}
75-
environment="test"
76-
/>
77-
</AppShell>
78-
</MantineProvider>,
73+
<Header
74+
isOpen
75+
handleOpenNav={() => {}}
76+
user={MOCK_USER}
77+
environment="test"
78+
/>
79+
</AppShell>
80+
</MantineProvider>
81+
</NextIntlClientProvider>,
7982
)
8083
})
8184

packages/lib/src/components/Home/Home.test.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import { AppShell, MantineProvider } from '@mantine/core'
2121
import * as MantineSpotlight from '@mantine/spotlight'
2222
import { fireEvent, render, screen } from '@testing-library/react'
23+
import { NextIntlClientProvider } from 'next-intl'
2324
import { beforeAll, describe, expect, it, vi } from 'vitest'
2425

2526
import { Home } from './Home'
@@ -56,11 +57,13 @@ describe('Home', () => {
5657

5758
beforeAll(() => {
5859
render(
59-
<MantineProvider>
60-
<AppShell>
61-
<Home onClickButton={onClickButton} showUsersPageButton />
62-
</AppShell>
63-
</MantineProvider>,
60+
<NextIntlClientProvider locale="en" messages={{}}>
61+
<MantineProvider>
62+
<AppShell>
63+
<Home onClickButton={onClickButton} showUsersPageButton />
64+
</AppShell>
65+
</MantineProvider>
66+
</NextIntlClientProvider>,
6467
)
6568
})
6669

packages/lib/src/components/LoginForm/LoginForm.test.tsx

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
RenderResult,
2626
screen,
2727
} from '@testing-library/react'
28+
import { NextIntlClientProvider } from 'next-intl'
2829
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
2930

3031
import { LoginForm } from './LoginForm'
@@ -43,19 +44,20 @@ describe('LoginForm', () => {
4344
const isPasswordResetFormOpened = false
4445

4546
LoginFormMounted = render(
46-
<MantineProvider>
47-
<AppShell>
48-
<LoginForm
49-
handleLogin={handleLogin}
50-
handlePasswordReset={handlePasswordReset}
51-
setIsPasswordResetFormOpened={setIsPasswordResetFormOpened}
52-
isResetPasswordSent={isResetPasswordSent}
53-
isPasswordResetFormOpened={isPasswordResetFormOpened}
54-
isResettingPassword={isResettingPassword}
55-
/>
56-
,
57-
</AppShell>
58-
</MantineProvider>,
47+
<NextIntlClientProvider locale="en" messages={{}}>
48+
<MantineProvider>
49+
<AppShell>
50+
<LoginForm
51+
handleLogin={handleLogin}
52+
handlePasswordReset={handlePasswordReset}
53+
setIsPasswordResetFormOpened={setIsPasswordResetFormOpened}
54+
isResetPasswordSent={isResetPasswordSent}
55+
isPasswordResetFormOpened={isPasswordResetFormOpened}
56+
isResettingPassword={isResettingPassword}
57+
/>
58+
</AppShell>
59+
</MantineProvider>
60+
</NextIntlClientProvider>,
5961
)
6062
})
6163

@@ -86,19 +88,20 @@ describe('LoginForm', () => {
8688
const isPasswordResetFormOpened = true
8789

8890
LoginFormMounted = render(
89-
<MantineProvider>
90-
<AppShell>
91-
<LoginForm
92-
handleLogin={handleLogin}
93-
handlePasswordReset={handlePasswordReset}
94-
setIsPasswordResetFormOpened={setIsPasswordResetFormOpened}
95-
isResetPasswordSent={isResetPasswordSent}
96-
isPasswordResetFormOpened={isPasswordResetFormOpened}
97-
isResettingPassword={isResettingPassword}
98-
/>
99-
,
100-
</AppShell>
101-
</MantineProvider>,
91+
<NextIntlClientProvider locale="en" messages={{}}>
92+
<MantineProvider>
93+
<AppShell>
94+
<LoginForm
95+
handleLogin={handleLogin}
96+
handlePasswordReset={handlePasswordReset}
97+
setIsPasswordResetFormOpened={setIsPasswordResetFormOpened}
98+
isResetPasswordSent={isResetPasswordSent}
99+
isPasswordResetFormOpened={isPasswordResetFormOpened}
100+
isResettingPassword={isResettingPassword}
101+
/>
102+
</AppShell>
103+
</MantineProvider>
104+
</NextIntlClientProvider>,
102105
)
103106

104107
expect(

0 commit comments

Comments
 (0)