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() 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) }) }) })