mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 16:02:32 +00:00
66 lines
2.0 KiB
TypeScript
66 lines
2.0 KiB
TypeScript
import { createElement, type ReactNode } from 'react'
|
|
import { act, create, type ReactTestRenderer } from 'react-test-renderer'
|
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
import { PickerModal } from './PickerModal'
|
|
|
|
vi.mock('react-native', () => ({
|
|
Pressable: 'Pressable',
|
|
StyleSheet: { create: (styles: unknown) => styles, hairlineWidth: 1 },
|
|
Text: 'Text',
|
|
View: 'View'
|
|
}))
|
|
|
|
vi.mock('lucide-react-native', () => ({ Check: 'Check' }))
|
|
|
|
vi.mock('./BottomDrawer', async () => {
|
|
const React = await import('react')
|
|
return {
|
|
BottomDrawer: ({ children }: { children?: ReactNode }) =>
|
|
React.createElement('BottomDrawer', null, children)
|
|
}
|
|
})
|
|
|
|
describe('PickerModal accessibility', () => {
|
|
let renderer: ReactTestRenderer | null = null
|
|
|
|
beforeEach(() => {
|
|
vi.spyOn(console, 'error').mockImplementation((...args) => {
|
|
if (typeof args[0] !== 'string' || !args[0].includes('react-test-renderer is deprecated')) {
|
|
throw new Error(String(args[0]))
|
|
}
|
|
})
|
|
})
|
|
|
|
afterEach(() => {
|
|
act(() => renderer?.unmount())
|
|
renderer = null
|
|
vi.restoreAllMocks()
|
|
})
|
|
|
|
it('announces option rows as actionable with their selection and disabled state', async () => {
|
|
await act(async () => {
|
|
renderer = create(
|
|
createElement(PickerModal, {
|
|
visible: true,
|
|
title: 'Create Workspace On',
|
|
options: [
|
|
{ value: 'desk', label: 'Desk' },
|
|
{ value: 'laptop', label: 'Laptop', disabled: true }
|
|
],
|
|
selected: 'desk',
|
|
onSelect: vi.fn(),
|
|
onClose: vi.fn()
|
|
})
|
|
)
|
|
})
|
|
|
|
const rows = renderer!.root.findAllByType('Pressable')
|
|
expect(rows.map((row) => row.props.accessible)).toEqual([true, true])
|
|
expect(rows.map((row) => row.props.accessibilityRole)).toEqual(['button', 'button'])
|
|
expect(rows.map((row) => row.props.accessibilityState)).toEqual([
|
|
{ disabled: false, selected: true },
|
|
{ disabled: true, selected: false }
|
|
])
|
|
})
|
|
})
|