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>={...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})} })