Barazo default frontend
barazo.forum
1import { describe, it, expect, vi, beforeEach } from 'vitest'
2import { renderHook } from '@testing-library/react'
3import { useThreadIndent } from './use-thread-indent'
4
5vi.mock('./use-media-query', () => ({
6 useMediaQuery: vi.fn(),
7}))
8
9import { useMediaQuery } from './use-media-query'
10const mockUseMediaQuery = vi.mocked(useMediaQuery)
11
12describe('useThreadIndent', () => {
13 beforeEach(() => {
14 mockUseMediaQuery.mockReset()
15 })
16
17 it('returns desktop indent step for wide viewports', () => {
18 mockUseMediaQuery.mockImplementation((q: string) => {
19 if (q === '(min-width: 768px)') return true
20 if (q === '(min-width: 481px)') return true
21 return false
22 })
23 const { result } = renderHook(() => useThreadIndent())
24 expect(result.current.indentStep).toBe(22)
25 expect(result.current.showChevron).toBe(true)
26 })
27
28 it('returns tablet indent step for medium viewports', () => {
29 mockUseMediaQuery.mockImplementation((q: string) => {
30 if (q === '(min-width: 768px)') return false
31 if (q === '(min-width: 481px)') return true
32 return false
33 })
34 const { result } = renderHook(() => useThreadIndent())
35 expect(result.current.indentStep).toBe(16)
36 expect(result.current.showChevron).toBe(true)
37 })
38
39 it('returns mobile indent step and hides chevron for narrow viewports', () => {
40 mockUseMediaQuery.mockImplementation(() => false)
41 const { result } = renderHook(() => useThreadIndent())
42 expect(result.current.indentStep).toBe(8)
43 expect(result.current.showChevron).toBe(false)
44 })
45})