Files
ReceiptGenerator/tests/settings-store.test.ts

23 lines
1.6 KiB
TypeScript

import {it,expect} from 'vitest'
import {mkdtemp,readFile,writeFile,rm} from 'node:fs/promises'
import {tmpdir} from 'node:os'
import path from 'node:path'
import {SettingsStore} from '../src/main/settings-store'
import {defaultSettings} from '../src/shared/settings'
it('升级旧配置启用固定导出行为,保留其他偏好,并在下次保存后持久化',async()=>{
const dir=await mkdtemp(path.join(tmpdir(),'receipt-settings-')),file=path.join(dir,'settings.json')
try{
const old:Partial<ReturnType<typeof defaultSettings>>={...defaultSettings(dir),createBatchFolder:false,openAfterExport:false,numberPrefix:'OLD',defaultCashier:'原出纳',fileNamePattern:'customer_number'}
delete old.historyPageSize
await writeFile(file,JSON.stringify(old))
const store=new SettingsStore(file,dir),loaded=await store.load()
expect(loaded).toMatchObject({createBatchFolder:true,openAfterExport:true,numberPrefix:'OLD',defaultCashier:'原出纳',fileNamePattern:'customer_number',outputDirectory:dir,historyPageSize:5})
// Loading does not overwrite the user's existing file; the next explicit save persists the policy.
expect(JSON.parse(await readFile(file,'utf8'))).toEqual(old)
const saved=await store.save({...loaded,createBatchFolder:false,openAfterExport:false,defaultReviewer:'复核人',historyPageSize:20})
expect(saved).toMatchObject({createBatchFolder:true,openAfterExport:true,defaultReviewer:'复核人',numberPrefix:'OLD',historyPageSize:20})
expect(await new SettingsStore(file,dir).load()).toEqual(saved)
}finally{await rm(dir,{recursive:true,force:true})}
})