import { describe, expect, it } from 'vitest' import { clampSearchPullDistance, isSearchShortcut, isAtSearchPullOrigin, shouldHideSearchAfterSwipe, shouldRevealSearchAfterPull, } from './mobile-search' describe('mobile task search gestures', () => { it('clamps downward pull distance without treating upward motion as pull', () => { expect(clampSearchPullDistance(-20)).toBe(0) expect(clampSearchPullDistance(24)).toBe(24) expect(clampSearchPullDistance(100)).toBe(72) }) it('reveals only after crossing the pull threshold', () => { expect(shouldRevealSearchAfterPull(55)).toBe(false) expect(shouldRevealSearchAfterPull(56)).toBe(true) }) it('requires every relevant scroll container to be at the top', () => { expect(isAtSearchPullOrigin(0, 0, 0)).toBe(true) expect(isAtSearchPullOrigin(0, 12, 0)).toBe(false) }) it('hides only after an upward swipe when the query is empty', () => { expect(shouldHideSearchAfterSwipe(-36, '')).toBe(true) expect(shouldHideSearchAfterSwipe(-35, '')).toBe(false) expect(shouldHideSearchAfterSwipe(-80, 'dodo')).toBe(false) }) it('recognizes command/control K without hijacking plain typing', () => { expect(isSearchShortcut({ key: 'k', metaKey: true, ctrlKey: false })).toBe(true) expect(isSearchShortcut({ key: 'K', metaKey: false, ctrlKey: true })).toBe(true) expect(isSearchShortcut({ key: 'k', metaKey: false, ctrlKey: false })).toBe(false) }) })