From ba6728b4706fe880ab984e287b52ba6e779ed0ae Mon Sep 17 00:00:00 2001 From: Kasper Peulen Date: Thu, 16 May 2024 12:01:02 +0200 Subject: [PATCH] expect Redirect --- app/note/[id]/page.stories.tsx | 8 +++++--- lib/test-utils.ts | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/note/[id]/page.stories.tsx b/app/note/[id]/page.stories.tsx index a5ad327..26b20a4 100644 --- a/app/note/[id]/page.stories.tsx +++ b/app/note/[id]/page.stories.tsx @@ -8,6 +8,8 @@ import { createUserCookie, userCookieKey } from '#lib/session' import { PageDecorator } from '#.storybook/decorators' import { login } from '#app/actions.mock' import * as auth from '#app/auth/route' +import { expectRedirect } from '#lib/test-utils' +import { getRouter } from '@storybook/nextjs/navigation.mock' const meta = { component: Page, @@ -84,9 +86,8 @@ export const LoginShouldGetOAuthTokenAndSetCookie: Story = { await userEvent.click( await canvas.findByRole('menuitem', { name: /login to add/i }), ) - await waitFor(async () => { - await expect(cookies().get(userCookieKey)?.value).toContain('storybookjs') - }) + await expectRedirect('/') + await expect(cookies().get(userCookieKey)?.value).toContain('storybookjs') }, } @@ -98,6 +99,7 @@ export const LogoutShouldDeleteCookie: Story = { const canvas = within(canvasElement) await expect(cookies().get(userCookieKey)?.value).toContain('storybookjs') await userEvent.click(await canvas.findByRole('button', { name: 'logout' })) + await expectRedirect('/') await expect(cookies().get(userCookieKey)).toBeUndefined() }, } diff --git a/lib/test-utils.ts b/lib/test-utils.ts index 6a49158..10a2051 100644 --- a/lib/test-utils.ts +++ b/lib/test-utils.ts @@ -1,7 +1,8 @@ import { expect, waitFor } from '@storybook/test' import { getRouter } from '@storybook/nextjs/navigation.mock' -export const expectRedirect = (url: string) => - waitFor(() => +export const expectRedirect = async (url: string) => { + await waitFor(() => expect(getRouter().push).toHaveBeenLastCalledWith(url, expect.anything()), ) +}