/**
 * 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 | undefined,  // undefined = cargando, null = sin resultado
): { backLabel: string; backTo: string } {
  const isClientRole = platformRole === 'client_editor' || platformRole === 'client_viewer'
  const backLabel = isClientRole
    ? 'Procesos'
    : orgName ?? 'Biblioteca'
  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 /library?org=uuid', () => {
    const { backLabel, backTo } = resolveBackButton('platform_admin', 'org-uuid-123', 'Solar Banco')
    expect(backLabel).toBe('Solar Banco')
    expect(backTo).toBe('/library?org=org-uuid-123')
  })

  it('2. admin con proceso de cliente mientras orgName carga → muestra "Biblioteca" como fallback', () => {
    const { backLabel, backTo } = resolveBackButton('platform_admin', 'org-uuid-123', undefined)
    expect(backLabel).toBe('Biblioteca')
    expect(backTo).toBe('/library?org=org-uuid-123')
  })

  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('/library')
  })

  it('4. member sin org → igual que platform_admin', () => {
    const { backLabel, backTo } = resolveBackButton('member', null, null)
    expect(backLabel).toBe('Biblioteca')
    expect(backTo).toBe('/library')
  })

  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('/library')
  })

  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('/library')
  })
})
