// @vitest-environment happy-dom
//
// RecordPrefillBar: pinta los ayudantes registrados para el modelo/modo, los
// filtra por permiso y solo deja pasar al formulario las claves que declara.
import { afterEach, describe, expect, it, vi } from 'vitest'
import { act, cleanup, fireEvent, render, screen } from '@testing-library/react'
import { registerRecordPrefill, unregisterRecordPrefillsByOwner, type RecordPrefillProps } from '@asteby/metacore-sdk'
import { RecordPrefillBar } from '../record-prefill-bar'
import { PermissionsProvider } from '../permissions-context'
afterEach(() => {
cleanup()
unregisterRecordPrefillsByOwner('fiscal_mexico')
})
function CsfButton({ applyValues }: RecordPrefillProps) {
return (
)
}
describe('RecordPrefillBar', () => {
it('aplica solo claves permitidas y aparece cuando el remote registra tarde', () => {
const onApply = vi.fn()
render(
,
)
expect(screen.queryByText('Cargar constancia')).toBeNull()
act(() => {
registerRecordPrefill({ id: 'fiscal_mexico.csf', models: ['Customer'], component: CsfButton }, 'fiscal_mexico')
})
fireEvent.click(screen.getByText('Cargar constancia'))
expect(onApply).toHaveBeenCalledWith({ tax_id: 'XAXX010101000' })
})
it('se oculta sin el permiso declarado', () => {
registerRecordPrefill(
{ id: 'fiscal_mexico.csf', models: ['Customer'], component: CsfButton, permission: 'customers.csf' },
'fiscal_mexico',
)
render(
{}} />
,
)
expect(screen.queryByText('Cargar constancia')).toBeNull()
})
})