Skip to content

Commit 6264f23

Browse files
committed
test(nuxt): Test imports from nuxt/server in the nuxt-5 E2E app
1 parent 090464a commit 6264f23

16 files changed

Lines changed: 400 additions & 299 deletions

File tree

‎dev-packages/e2e-tests/test-applications/nuxt-5/app/pages/fetch-server-routes.vue‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,19 @@
77
</template>
88

99
<script setup lang="ts">
10-
import { useFetch } from '#imports';
10+
import { useFetch, useRoute } from '#imports';
11+
12+
const apiPrefix = useRoute().query.apiPrefix ?? '/api';
1113
1214
const fetchError = async () => {
13-
await useFetch('/api/server-error');
15+
await useFetch(`${apiPrefix}/server-error`);
1416
};
1517
1618
const fetchNitroFetch = async () => {
17-
await useFetch('/api/nitro-fetch');
19+
await useFetch(`${apiPrefix}/nitro-fetch`);
1820
};
1921
2022
const fetchThirdPartyHttpError = async () => {
21-
await useFetch('/api/third-party-http-error');
23+
await useFetch(`${apiPrefix}/third-party-http-error`);
2224
};
2325
</script>

‎dev-packages/e2e-tests/test-applications/nuxt-5/app/pages/test-param/[param].vue‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ import { useRoute, useFetch } from '#imports';
33
44
const route = useRoute();
55
const param = route.params.param;
6+
const apiPrefix = route.query.apiPrefix ?? '/api';
67
78
const fetchError = async () => {
8-
await useFetch(`/api/param-error/${param}`);
9+
await useFetch(`${apiPrefix}/param-error/${param}`);
910
};
1011
1112
const fetchData = async () => {

‎dev-packages/e2e-tests/test-applications/nuxt-5/app/pages/test-param/user/[userId].vue‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ import { useFetch, useRoute } from '#imports';
33
44
const route = useRoute();
55
const userId = route.params.userId as string;
6+
const apiPrefix = route.query.apiPrefix ?? '/api';
67
7-
const { data } = await useFetch(`/api/user/${userId}`, {
8+
const { data } = await useFetch(`${apiPrefix}/user/${userId}`, {
89
server: false, // Don't fetch during SSR, only client-side
910
});
1011
</script>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { defineEventHandler } from 'nuxt/server';
2+
3+
export default defineEventHandler(event => {
4+
return {
5+
message: 'Server middleware test endpoint',
6+
path: event.url.pathname,
7+
method: event.req.method,
8+
};
9+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { defineEventHandler } from 'nuxt/server';
2+
3+
// `$fetch` is a Nitro global, not a `nuxt/server` export, so the portable copy uses `fetch`.
4+
export default defineEventHandler(async () => {
5+
const response = await fetch('https://example.com');
6+
return response.text();
7+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { defineEventHandler } from 'nuxt/server';
2+
3+
export default defineEventHandler(() => {
4+
throw new Error('Nuxt 4 Param Server error');
5+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { defineEventHandler } from 'nuxt/server';
2+
3+
export default defineEventHandler(() => {
4+
throw new Error('Nuxt 4 Server error');
5+
});
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { defineEventHandler } from 'nuxt/server';
2+
3+
// Mimics ky's and got's `HTTPError`: it shares its `name` with h3's error class, but keeps the
4+
// status on `response` instead of on the error itself.
5+
class ThirdPartyHTTPError extends Error {
6+
public readonly response = { status: 404 };
7+
8+
public constructor(message: string) {
9+
super(message);
10+
this.name = 'HTTPError';
11+
}
12+
}
13+
14+
export default defineEventHandler(() => {
15+
throw new ThirdPartyHTTPError('Nuxt 5 third-party HTTPError');
16+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { defineEventHandler, getRouterParam } from 'nuxt/server';
2+
3+
export default defineEventHandler(event => {
4+
const userId = getRouterParam(event, 'userId');
5+
6+
return `UserId Param: ${userId}!`;
7+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { defineEventHandler } from 'nuxt/server';
2+
3+
export default defineEventHandler(event => {
4+
event.res.headers.set('x-nuxt-server-first-middleware', 'executed');
5+
});

0 commit comments

Comments
 (0)