codev / desktop /src /components /layout /WindowControls.test.tsx
chenbhao's picture
feat: desktop
1f21206
Raw
History Blame
2.02 kB
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { fireEvent, render, screen, waitFor } from '@testing-library/react'
import '@testing-library/jest-dom'
const minimize = vi.fn().mockResolvedValue(undefined)
const toggleMaximize = vi.fn().mockResolvedValue(undefined)
const close = vi.fn().mockResolvedValue(undefined)
const isMaximized = vi.fn().mockResolvedValue(false)
const onResized = vi.fn().mockResolvedValue(() => {})
vi.mock('@tauri-apps/api/window', () => ({
getCurrentWindow: () => ({
minimize,
toggleMaximize,
close,
isMaximized,
onResized,
}),
}))
describe('WindowControls', () => {
const originalPlatform = navigator.platform
beforeEach(async () => {
minimize.mockClear()
toggleMaximize.mockClear()
close.mockClear()
isMaximized.mockClear()
onResized.mockClear()
Object.defineProperty(window, '__TAURI_INTERNALS__', {
configurable: true,
value: {},
})
Object.defineProperty(navigator, 'platform', {
configurable: true,
value: 'Win32',
})
vi.resetModules()
})
afterEach(() => {
Reflect.deleteProperty(window, '__TAURI_INTERNALS__')
Object.defineProperty(navigator, 'platform', {
configurable: true,
value: originalPlatform,
})
})
it('invokes Tauri window APIs for custom controls on Windows', async () => {
const { WindowControls } = await import('./WindowControls')
render(<WindowControls />)
await waitFor(() => {
expect(screen.getByRole('button', { name: 'Minimize window' })).toBeInTheDocument()
})
fireEvent.click(screen.getByRole('button', { name: 'Minimize window' }))
fireEvent.click(screen.getByRole('button', { name: 'Maximize window' }))
fireEvent.click(screen.getByRole('button', { name: 'Close window' }))
await waitFor(() => {
expect(minimize).toHaveBeenCalledTimes(1)
expect(toggleMaximize).toHaveBeenCalledTimes(1)
expect(close).toHaveBeenCalledTimes(1)
})
})
})