Skip to content

Commit f0d47c1

Browse files
committed
test: add locale assertions for middleware handling
1 parent 3acf9d3 commit f0d47c1

File tree

5 files changed

+74
-16
lines changed

5 files changed

+74
-16
lines changed

tests/e2e/edge-middleware.test.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,13 @@ test.describe('json data', () => {
6363
describeLabel: 'NextResponse.next() -> getServerSideProps page',
6464
selector: 'NextResponse.next()#getServerSideProps',
6565
jsonPathMatcher: '/link/next-getserversideprops.json',
66+
assertLocale: true,
6667
},
6768
{
6869
describeLabel: 'NextResponse.next() -> getStaticProps page',
6970
selector: 'NextResponse.next()#getStaticProps',
7071
jsonPathMatcher: '/link/next-getstaticprops.json',
72+
assertLocale: true,
7173
},
7274
{
7375
describeLabel: 'NextResponse.next() -> fully static page',
@@ -78,11 +80,13 @@ test.describe('json data', () => {
7880
describeLabel: 'NextResponse.rewrite() -> getServerSideProps page',
7981
selector: 'NextResponse.rewrite()#getServerSideProps',
8082
jsonPathMatcher: '/link/rewrite-me-getserversideprops.json',
83+
assertLocale: true,
8184
},
8285
{
8386
describeLabel: 'NextResponse.rewrite() -> getStaticProps page',
8487
selector: 'NextResponse.rewrite()#getStaticProps',
8588
jsonPathMatcher: '/link/rewrite-me-getstaticprops.json',
89+
assertLocale: true,
8690
},
8791
]
8892

@@ -144,10 +148,22 @@ test.describe('json data', () => {
144148
test.describe('with 18n', () => {
145149
for (const testConfig of testConfigs) {
146150
test.describe(testConfig.describeLabel, () => {
147-
for (const { localeLabel, pageWithLinksPathname } of [
148-
{ localeLabel: 'implicit default locale', pageWithLinksPathname: '/link' },
149-
{ localeLabel: 'explicit default locale', pageWithLinksPathname: '/en/link' },
150-
{ localeLabel: 'explicit non-default locale', pageWithLinksPathname: '/fr/link' },
151+
for (const { localeLabel, pageWithLinksPathname, expectedLocale } of [
152+
{
153+
localeLabel: 'implicit default locale',
154+
pageWithLinksPathname: '/link',
155+
expectedLocale: 'en',
156+
},
157+
{
158+
localeLabel: 'explicit default locale',
159+
pageWithLinksPathname: '/en/link',
160+
expectedLocale: 'en',
161+
},
162+
{
163+
localeLabel: 'explicit non-default locale',
164+
pageWithLinksPathname: '/fr/link',
165+
expectedLocale: 'fr',
166+
},
151167
]) {
152168
test.describe(localeLabel, () => {
153169
test('json data fetch', async ({ middlewareI18n, page }) => {
@@ -189,6 +205,10 @@ test.describe('json data', () => {
189205

190206
// we expect client navigation to work without browser reload
191207
expect(browserNavigationWorked).toBe(true)
208+
209+
if (testConfig.assertLocale) {
210+
await expect(page.getByTestId('current-locale')).toHaveText(expectedLocale)
211+
}
192212
})
193213
})
194214
}
Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
1-
export default function Page() {
1+
export default function Page({ locale, locales }) {
22
return (
33
<div data-page="NextResponse.next()#getServerSideProps">
44
<h1>
55
<code>getServerSideProps</code> page
66
</h1>
7+
<dt>Current locale:</dt>
8+
<dd data-testid="current-locale">{locale ?? 'N/A'}</dd>
9+
<dt>All locales:</dt>
10+
<dd data-testid="all-locales">{locales ? locales.join(',') : 'N/A'}</dd>
711
</div>
812
)
913
}
1014

11-
export function getServerSideProps() {
15+
/** @type {import('next').GetServerSideProps} */
16+
export function getServerSideProps({ locale, locales }) {
17+
console.log('NextResponse.next()#getServerSideProps', { locale, locales })
1218
return {
13-
props: {},
19+
props: {
20+
locale,
21+
locales,
22+
},
1423
}
1524
}
Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,25 @@
1-
export default function Page() {
1+
export default function Page({ locale, locales }) {
22
return (
33
<div data-page="NextResponse.next()#getStaticProps">
44
<h1>
55
<code>getStaticProps</code> page
66
</h1>
7+
<dt>Current locale:</dt>
8+
<dd data-testid="current-locale">{locale ?? 'N/A'}</dd>
9+
<dt>All locales:</dt>
10+
<dd data-testid="all-locales">{locales ? locales.join(',') : 'N/A'}</dd>
711
</div>
812
)
913
}
1014

11-
export function getStaticProps() {
15+
/** @type {import('next').GetStaticProps} */
16+
export function getStaticProps({ locale, locales }) {
17+
console.log('NextResponse.next()#getStaticProps', { locale, locales })
1218
return {
13-
props: {},
19+
props: {
20+
locale,
21+
locales,
22+
},
23+
revalidate: 5,
1424
}
1525
}
Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
1-
export default function Page() {
1+
export default function Page({ locale, locales }) {
22
return (
33
<div data-page="NextResponse.rewrite()#getServerSideProps">
44
<h1>
55
<code>getServerSideProps</code> page
66
</h1>
7+
<dt>Current locale:</dt>
8+
<dd data-testid="current-locale">{locale ?? 'N/A'}</dd>
9+
<dt>All locales:</dt>
10+
<dd data-testid="all-locales">{locales ? locales.join(',') : 'N/A'}</dd>
711
</div>
812
)
913
}
1014

11-
export function getServerSideProps() {
15+
/** @type {import('next').GetServerSideProps} */
16+
export function getServerSideProps({ locale, locales }) {
17+
console.log('NextResponse.rewrite()#getServerSideProps', { locale, locales })
1218
return {
13-
props: {},
19+
props: {
20+
locale,
21+
locales,
22+
},
1423
}
1524
}
Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,25 @@
1-
export default function Page() {
1+
export default function Page({ locale, locales }) {
22
return (
33
<div data-page="NextResponse.rewrite()#getStaticProps">
44
<h1>
55
<code>getStaticProps</code> page
66
</h1>
7+
<dt>Current locale:</dt>
8+
<dd data-testid="current-locale">{locale ?? 'N/A'}</dd>
9+
<dt>All locales:</dt>
10+
<dd data-testid="all-locales">{locales ? locales.join(',') : 'N/A'}</dd>
711
</div>
812
)
913
}
1014

11-
export function getStaticProps() {
15+
/** @type {import('next').GetStaticProps} */
16+
export function getStaticProps({ locale, locales }) {
17+
console.log('NextResponse.rewrite()#getStaticProps', { locale, locales })
1218
return {
13-
props: {},
19+
props: {
20+
locale,
21+
locales,
22+
},
23+
revalidate: 5,
1424
}
1525
}

0 commit comments

Comments
 (0)