Added tests

This commit is contained in:
Hein
2025-10-15 10:36:18 +02:00
parent 9c11b609dc
commit f058336597
10 changed files with 913 additions and 8 deletions

View File

@@ -0,0 +1,100 @@
import { act, renderHook } from '@testing-library/react'
import { beforeEach, describe, expect, it } from 'vitest'
import { MantineBetterMenusStoreProvider, useMantineBetterMenus } from './Store'
// Mock dependencies
vi.mock('@warkypublic/artemis-kit', () => ({
getUUID: () => 'test-uuid-123'
}))
const createWrapper = () => {
return ({ children }: { children: React.ReactNode }) => (
<MantineBetterMenusStoreProvider>
{children}
</MantineBetterMenusStoreProvider>
)
}
describe('MantineBetterMenus Store', () => {
let wrapper: ReturnType<typeof createWrapper>
beforeEach(() => {
wrapper = createWrapper()
})
it('initializes with empty menus array', () => {
const { result } = renderHook(() => useMantineBetterMenus(), { wrapper })
expect(result.current.menus).toEqual([])
})
it('can show a menu', () => {
const { result } = renderHook(() => useMantineBetterMenus(), { wrapper })
act(() => {
result.current.show('test-menu', {
items: [{ label: 'Test Item' }],
x: 100,
y: 200
})
})
expect(result.current.menus).toHaveLength(1)
expect(result.current.menus[0]).toMatchObject({
id: 'test-menu',
items: [{ label: 'Test Item' }],
visible: true,
x: 100,
y: 200
})
})
it('can hide a menu', () => {
const { result } = renderHook(() => useMantineBetterMenus(), { wrapper })
// First show a menu
act(() => {
result.current.show('test-menu', { x: 100, y: 200 })
})
expect(result.current.menus[0].visible).toBe(true)
// Then hide it
act(() => {
result.current.hide('test-menu')
})
expect(result.current.menus[0].visible).toBe(false)
})
it('can update instance state', () => {
const { result } = renderHook(() => useMantineBetterMenus(), { wrapper })
// Show a menu
act(() => {
result.current.show('test-menu', { x: 100, y: 200 })
})
// Update its position
act(() => {
result.current.setInstanceState('test-menu', 'x', 300)
})
expect(result.current.menus[0].x).toBe(300)
expect(result.current.menus[0].y).toBe(200) // Should remain unchanged
})
it('handles multiple menus', () => {
const { result } = renderHook(() => useMantineBetterMenus(), { wrapper })
act(() => {
result.current.show('menu-1', { x: 100, y: 200 })
result.current.show('menu-2', { x: 300, y: 400 })
})
expect(result.current.menus).toHaveLength(2)
expect(result.current.menus.find(m => m.id === 'menu-1')).toBeDefined()
expect(result.current.menus.find(m => m.id === 'menu-2')).toBeDefined()
})
})