From c1fa9dad7ad93c4f9da7442ebbf53f7374df561e Mon Sep 17 00:00:00 2001 From: Toby Schrapel Date: Tue, 29 Aug 2023 18:25:54 -0600 Subject: [PATCH] fix: getDefaultRedirectPath with locales --- .../src/handlers/__tests__/previewHandler.ts | 29 +++++++++++++++++++ packages/next/src/handlers/previewHandler.ts | 8 ++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/packages/next/src/handlers/__tests__/previewHandler.ts b/packages/next/src/handlers/__tests__/previewHandler.ts index 2177f3574..090b6c5a4 100644 --- a/packages/next/src/handlers/__tests__/previewHandler.ts +++ b/packages/next/src/handlers/__tests__/previewHandler.ts @@ -73,6 +73,35 @@ describe('previewHandler', () => { expect(res._getStatusCode()).toBe(302); }); + it('sets preview cookie path with locale', async () => { + const { req, res } = createMocks({ + method: 'GET', + query: { + post_id: DRAFT_POST_ID, + token: VALID_AUTH_TOKEN, + post_type: 'post', + locale: 'es', + }, + }); + + res.setPreviewData = jest.fn(); + await previewHandler(req, res); + + expect(res.setPreviewData).toHaveBeenCalledWith( + { + authToken: 'this is a valid auth', + id: 57, + postType: 'post', + revision: false, + }, + { + maxAge: 300, + path: '/es/modi-qui-dignissimos-sed-assumenda-sint-iusto-preview=true', + }, + ); + expect(res._getStatusCode()).toBe(302); + }); + it('set preview cookie path to all paths if onRedirect is passed without getRedirectPath', async () => { const { req, res } = createMocks({ method: 'GET', diff --git a/packages/next/src/handlers/previewHandler.ts b/packages/next/src/handlers/previewHandler.ts index 242b2806c..0055717b8 100644 --- a/packages/next/src/handlers/previewHandler.ts +++ b/packages/next/src/handlers/previewHandler.ts @@ -194,12 +194,8 @@ export async function previewHandler( const singleRoute = postTypeDef.single || '/'; const prefixRoute = singleRoute === '/' ? '' : singleRoute; const slugOrId = revision ? post_id : slug || post_id; - - if (locale) { - return `/${locale}/${prefixRoute}/${slugOrId}`; - } - - return `${prefixRoute}/${slugOrId}`; + const path = [locale, prefixRoute, slugOrId].filter((n) => n).join('/'); + return `/${path}`; }; const redirectPath =