import { describe, it, expect, vi } from 'vitest' import { fireEvent, render, screen } from '@testing-library/react' import { CategoryRowOther } from './category-row-other' describe('', () => { it('renders the default label + bare count (no parentheses)', () => { render() expect(screen.getByText('Others')).toBeTruthy() expect(screen.getByText('7')).toBeTruthy() expect(screen.queryByText('(7 more)')).toBeNull() }) it('honors custom labels with {count} placeholder', () => { render( , ) expect(screen.getByText('Hidden')).toBeTruthy() expect(screen.getByText('+3 not shown')).toBeTruthy() }) it('is not a button when onShowAll is omitted (static fallback)', () => { const { container } = render() expect(container.querySelectorAll('[role="button"]').length).toBe(0) }) describe('when onShowAll is provided', () => { it('renders as a button', () => { render() expect(screen.getByRole('button')).toBeTruthy() }) it('fires onShowAll on click', () => { const onShowAll = vi.fn() render() fireEvent.click(screen.getByRole('button')) expect(onShowAll).toHaveBeenCalledTimes(1) }) it('fires onShowAll on Enter and Space', () => { const onShowAll = vi.fn() render() const btn = screen.getByRole('button') fireEvent.keyDown(btn, { key: 'Enter' }) fireEvent.keyDown(btn, { key: ' ' }) expect(onShowAll).toHaveBeenCalledTimes(2) }) it('is keyboard-focusable', () => { render() expect(screen.getByRole('button').getAttribute('tabindex')).toBe('0') }) }) })