23 lines
1.6 KiB
TypeScript
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})}
|
|
})
|