Resumen de los cambios del fix de navegación:
Some checks failed
/ Deploy to Cloudflare Pages (push) Has been cancelled

LibraryPage.tsx:778 — reemplazó useSearch({ from: '/' }) por useRouterState + URLSearchParams. Ahora funciona tanto desde / como desde /library.
WorkspacePage.tsx:206-209 — handleBack() navega a /library (con o sin ?org=uuid) en lugar de /.
workspace-back-button.test.ts — backTo actualizado a /library y /library?org=... en los 6 tests.
library-ui.test.tsx — mock de useSearch → useRouterState (devuelve { location: { search: '' } }).
This commit is contained in:
2026-07-07 14:24:26 -03:00
parent ee356e5de6
commit f3f55a6857
5 changed files with 24 additions and 16 deletions

View File

@@ -73,7 +73,7 @@ vi.mock('@/components/AppHeader', () => ({ AppHeader: () => null }))
vi.mock('@tanstack/react-router', () => ({
useNavigate: () => vi.fn(),
useSearch: () => ({}),
useRouterState: () => ({ location: { search: '' } }),
Link: ({ children }: { children: React.ReactNode }) => <>{children}</>,
}))

View File

@@ -17,44 +17,44 @@ function resolveBackButton(
: orgId
? (orgName ?? 'Volver')
: 'Biblioteca'
const backTo = orgId && !isClientRole ? `/?org=${orgId}` : '/'
const backTo = orgId && !isClientRole ? `/library?org=${orgId}` : '/library'
return { backLabel, backTo }
}
describe('workspace back button — lógica de backLabel y backTo', () => {
it('1. admin con proceso de cliente → muestra nombre de org y navega a /?org=uuid', () => {
it('1. admin con proceso de cliente → muestra nombre de org y navega a /library?org=uuid', () => {
const { backLabel, backTo } = resolveBackButton('platform_admin', 'org-uuid-123', 'Solar Banco')
expect(backLabel).toBe('Solar Banco')
expect(backTo).toBe('/?org=org-uuid-123')
expect(backTo).toBe('/library?org=org-uuid-123')
})
it('2. admin con proceso de cliente mientras orgName carga → muestra "Volver" como fallback', () => {
const { backLabel, backTo } = resolveBackButton('platform_admin', 'org-uuid-123', null)
expect(backLabel).toBe('Volver')
expect(backTo).toBe('/?org=org-uuid-123')
expect(backTo).toBe('/library?org=org-uuid-123')
})
it('3. admin sin org asignada → muestra "Biblioteca" y navega a /', () => {
it('3. admin sin org asignada → muestra "Biblioteca" y navega a /library', () => {
const { backLabel, backTo } = resolveBackButton('platform_admin', null, null)
expect(backLabel).toBe('Biblioteca')
expect(backTo).toBe('/')
expect(backTo).toBe('/library')
})
it('4. member sin org → igual que platform_admin', () => {
const { backLabel, backTo } = resolveBackButton('member', null, null)
expect(backLabel).toBe('Biblioteca')
expect(backTo).toBe('/')
expect(backTo).toBe('/library')
})
it('5. client_editor con proceso de cliente → muestra "Procesos" y navega a /', () => {
it('5. client_editor con proceso de cliente → muestra "Procesos" y navega a /library', () => {
const { backLabel, backTo } = resolveBackButton('client_editor', 'org-uuid-123', 'Solar Banco')
expect(backLabel).toBe('Procesos')
expect(backTo).toBe('/')
expect(backTo).toBe('/library')
})
it('6. client_viewer con proceso de cliente → muestra "Procesos" y navega a /', () => {
it('6. client_viewer con proceso de cliente → muestra "Procesos" y navega a /library', () => {
const { backLabel, backTo } = resolveBackButton('client_viewer', 'org-uuid-123', 'Solar Banco')
expect(backLabel).toBe('Procesos')
expect(backTo).toBe('/')
expect(backTo).toBe('/library')
})
})