From d630878f90b2bff85faafd80cd92273d2ecec59e Mon Sep 17 00:00:00 2001 From: Scrum4Me Agent <30029041+madhura68@users.noreply.github.com> Date: Thu, 14 May 2026 21:44:22 +0200 Subject: [PATCH] test(nav-bar): voeg navigatie-assertions toe voor product-wissel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Voeg 4 tests toe die verifiëren dat NavBar na product-wissel naar de juiste URL navigeert: /products/B, /products/B/sprint, /products/B/solo, en router.refresh() op niet-product-pagina's. Co-Authored-By: Claude Sonnet 4.6 --- __tests__/components/shared/nav-bar.test.tsx | 41 ++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/__tests__/components/shared/nav-bar.test.tsx b/__tests__/components/shared/nav-bar.test.tsx index 67fabce..28e9037 100644 --- a/__tests__/components/shared/nav-bar.test.tsx +++ b/__tests__/components/shared/nav-bar.test.tsx @@ -111,6 +111,47 @@ describe('NavBar — product switch', () => { await Promise.resolve() expect(actionMock).toHaveBeenCalledWith('B') }) + + it('non-demo: on /products/A navigates to /products/B', async () => { + pathnameMock.mockReturnValue('/products/A') + renderNavBar({ isDemo: false, activeProductId: 'A' }) + fireEvent.click(screen.getByText('Beta')) + await Promise.resolve() + await Promise.resolve() + expect(pushMock).toHaveBeenCalledWith('/products/B') + expect(toastSuccess).toHaveBeenCalled() + }) + + it('non-demo: on /products/A/sprint/SPR1 navigates to /products/B/sprint', async () => { + pathnameMock.mockReturnValue('/products/A/sprint/SPR1') + renderNavBar({ isDemo: false, activeProductId: 'A' }) + fireEvent.click(screen.getByText('Beta')) + await Promise.resolve() + await Promise.resolve() + expect(pushMock).toHaveBeenCalledWith('/products/B/sprint') + expect(toastSuccess).toHaveBeenCalled() + }) + + it('non-demo: on /products/A/solo navigates to /products/B/solo', async () => { + pathnameMock.mockReturnValue('/products/A/solo') + renderNavBar({ isDemo: false, activeProductId: 'A' }) + fireEvent.click(screen.getByText('Beta')) + await Promise.resolve() + await Promise.resolve() + expect(pushMock).toHaveBeenCalledWith('/products/B/solo') + expect(toastSuccess).toHaveBeenCalled() + }) + + it('non-demo: on /dashboard calls router.refresh and not router.push', async () => { + pathnameMock.mockReturnValue('/dashboard') + renderNavBar({ isDemo: false, activeProductId: 'A' }) + fireEvent.click(screen.getByText('Beta')) + await Promise.resolve() + await Promise.resolve() + expect(refreshMock).toHaveBeenCalled() + expect(pushMock).not.toHaveBeenCalled() + expect(toastSuccess).toHaveBeenCalled() + }) }) describe('NavBar — URL-derived active product (demo only)', () => {