Initial commit: Receipt Studio desktop application

This commit is contained in:
fuenmao
2026-10-19 11:09:09 +08:00
commit 2caac3c31f
77 changed files with 9846 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
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})}
})