1.9 KiB
Plan: Agregar guard de disabled al handler onClick en Button
Contexto
El componente Button (src/components/Button/index.tsx) ya expone una prop onClick, pero la implementación no verifica el estado disabled antes de ejecutar el handler. El test existente (Button.test.tsx línea 21-27) espera que onClick no se llame cuando el botón está disabled, pero la implementación actual no tiene esa protección.
Cambios
1. src/components/Button/index.tsx — Agregar guard disabled en onClick
En el render del <button> (línea 80-88), envolver onClick para que no se ejecute si disabled es true:
<button
className={`btn ${variantClasses[variant]} ${className}`.trim()}
onClick={disabled ? undefined : onClick}
type={type}
disabled={disabled}
>
{children}
</button>
También agregar el guard para el caso file-upload (línea 71), donde onChange del input file también debería respetar disabled.
2. src/components/Button/__tests__/Button.test.tsx — Agregar test positivo
Agregar un test que verifique que onClick sí se llama cuando el botón está habilitado y se hace click:
it('calls onClick handler when enabled and clicked', () => {
const handleClick = jest.fn();
render(<Button onClick={handleClick}>Click me</Button>);
const button = screen.getByRole('button', { name: /click me/i });
button.click();
expect(handleClick).toHaveBeenCalledTimes(1);
});
3. src/components/Button/Button.stories.tsx — Story de onClick
Agregar una Story que demuestre el uso de onClick con una función callback simple, para que sea visible en Storybook.
Archivos a modificar
src/components/Button/index.tsxsrc/components/Button/__tests__/Button.test.tsxsrc/components/Button/Button.stories.tsx
Verificación
npm test -- --testPathPattern="Button.test" --coverage
Confirmar que todos los tests de Button pasan y que el coverage se mantiene.