Files
bilin/tests/main/sync.service.test.ts

51 lines
1.7 KiB
TypeScript

import { describe, it, expect, beforeEach, afterEach } from 'vitest'
import { mkdtempSync, rmSync, existsSync } from 'fs'
import { join } from 'path'
import { tmpdir } from 'os'
import { SyncService } from '../../src/main/services/sync.service'
import { GlobalSettingsService } from '../../src/main/services/global-settings'
import { BookRegistryService } from '../../src/main/services/book-registry'
import { SYNC_BUNDLE_NAME } from '../../src/main/services/sync-crypto'
import { closeAllBookDbs } from '../../src/main/db/connection'
describe('SyncService', () => {
let userDir: string
let sync: SyncService
beforeEach(() => {
userDir = mkdtempSync(join(tmpdir(), 'bilin-sync-svc-'))
const settings = new GlobalSettingsService(userDir)
const registry = new BookRegistryService(userDir)
registry.create({ name: '同步测试书', category: '玄幻', createSampleChapter: false })
sync = new SyncService(registry, settings, userDir)
})
afterEach(() => {
closeAllBookDbs()
try {
rmSync(userDir, { recursive: true, force: true })
} catch {
/* windows file lock */
}
})
it('IT-SYNC-01: local-folder sync writes encrypted bundle', async () => {
const syncDir = mkdtempSync(join(tmpdir(), 'bilin-sync-target-'))
try {
sync.configure({
config: {
mode: 'local-folder',
localFolderPath: syncDir,
schedule: 'manual'
},
password: 'test-password-1'
})
const result = await sync.run('test-password-1')
expect(result.status).toBe('ok')
expect(existsSync(join(syncDir, SYNC_BUNDLE_NAME))).toBe(true)
} finally {
rmSync(syncDir, { recursive: true, force: true })
}
})
})