/** * Tests del back button contextual en el workspace header. * Verifica que backLabel y backTo se calculen correctamente según rol y orgId del proceso. */ import { describe, it, expect } from 'vitest' type PlatformRole = 'platform_admin' | 'member' | 'client_editor' | 'client_viewer' | 'guest' function resolveBackButton( platformRole: PlatformRole | undefined, orgId: string | null, orgName: string | null, ): { backLabel: string; backTo: string } { const isClientRole = platformRole === 'client_editor' || platformRole === 'client_viewer' const backLabel = isClientRole ? 'Procesos' : orgId ? (orgName ?? 'Volver') : 'Biblioteca' const backTo = orgId && !isClientRole ? `/?org=${orgId}` : '/' 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', () => { const { backLabel, backTo } = resolveBackButton('platform_admin', 'org-uuid-123', 'Solar Banco') expect(backLabel).toBe('Solar Banco') expect(backTo).toBe('/?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') }) it('3. admin sin org asignada → muestra "Biblioteca" y navega a /', () => { const { backLabel, backTo } = resolveBackButton('platform_admin', null, null) expect(backLabel).toBe('Biblioteca') expect(backTo).toBe('/') }) it('4. member sin org → igual que platform_admin', () => { const { backLabel, backTo } = resolveBackButton('member', null, null) expect(backLabel).toBe('Biblioteca') expect(backTo).toBe('/') }) it('5. client_editor con proceso de cliente → muestra "Procesos" y navega a /', () => { const { backLabel, backTo } = resolveBackButton('client_editor', 'org-uuid-123', 'Solar Banco') expect(backLabel).toBe('Procesos') expect(backTo).toBe('/') }) it('6. client_viewer con proceso de cliente → muestra "Procesos" y navega a /', () => { const { backLabel, backTo } = resolveBackButton('client_viewer', 'org-uuid-123', 'Solar Banco') expect(backLabel).toBe('Procesos') expect(backTo).toBe('/') }) })