/** * Component: useIsTruncated Hook Tests * Documentation: documentation/frontend/components.md */ // @vitest-environment jsdom import React, { useRef } from 'react'; import { render } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; import { useIsTruncated } from '@/lib/hooks/useIsTruncated'; function Probe({ scrollWidth, clientWidth }: { scrollWidth: number; clientWidth: number }) { const ref = useRef(null); const attach = (el: HTMLSpanElement | null) => { ref.current = el; if (el) { Object.defineProperty(el, 'scrollWidth', { configurable: true, value: scrollWidth }); Object.defineProperty(el, 'clientWidth', { configurable: true, value: clientWidth }); } }; const truncated = useIsTruncated(ref); return ( probe ); } describe('useIsTruncated', () => { it('returns false when scrollWidth fits inside clientWidth', () => { const { getByTestId } = render(); expect(getByTestId('probe').getAttribute('data-truncated')).toBe('no'); }); it('returns false when scrollWidth equals clientWidth', () => { const { getByTestId } = render(); expect(getByTestId('probe').getAttribute('data-truncated')).toBe('no'); }); it('returns true when scrollWidth exceeds clientWidth', () => { const { getByTestId } = render(); expect(getByTestId('probe').getAttribute('data-truncated')).toBe('yes'); }); });