openpencil/tests/engine/tauri/automation-files.test.ts
2026-05-19 12:03:21 +03:00

57 lines
1.7 KiB
TypeScript

import { afterEach, describe, expect, test } from 'bun:test'
import { ensureTauriParentDirectory } from '@/app/automation/bridge/file-handlers'
import { clearTauriMocks, mockTauriIPC } from '#tests/helpers/tauri/mocks'
afterEach(async () => {
await clearTauriMocks()
Reflect.deleteProperty(globalThis, 'window')
})
describe('Tauri automation file handling', () => {
test('creates parent directory for automation new-document paths', async () => {
const calls: Array<{ cmd: string; args: unknown }> = []
await mockTauriIPC((cmd, args) => {
calls.push({ cmd, args })
if (cmd === 'plugin:path|dirname') return '/tmp/open-pencil/nested'
return null
})
await ensureTauriParentDirectory('/tmp/open-pencil/nested/file.fig')
expect(calls).toEqual([
{
cmd: 'plugin:path|dirname',
args: { path: '/tmp/open-pencil/nested/file.fig' }
},
{
cmd: 'plugin:fs|mkdir',
args: { path: '/tmp/open-pencil/nested', options: { recursive: true } }
}
])
})
test('uses native dirname for Unicode Windows save paths', async () => {
const calls: Array<{ cmd: string; args: unknown }> = []
await mockTauriIPC((cmd, args) => {
calls.push({ cmd, args })
if (cmd === 'plugin:path|dirname') return 'C:\\Users\\Тест\\Документы'
return null
})
await ensureTauriParentDirectory('C:\\Users\\Тест\\Документы\\пример.fig')
expect(calls).toEqual([
{
cmd: 'plugin:path|dirname',
args: { path: 'C:\\Users\\Тест\\Документы\\пример.fig' }
},
{
cmd: 'plugin:fs|mkdir',
args: { path: 'C:\\Users\\Тест\\Документы', options: { recursive: true } }
}
])
})
})