import Foundation @main struct AdminPolicyEditorTests { @MainActor static func main() { let store = AdminStore() let travel = AdminExpensePolicy(type: "交通差旅", description: "原说明", tips: "提示", requiredKinds: [], materials: [], active: true) var accommodation = AdminExpensePolicy(type: "住宿费用", description: "未保存的说明", tips: "提示", requiredKinds: [], materials: [], active: true) accommodation.tips = "未保存的提示" accommodation.active = false store.policies = [travel, accommodation] var saved = travel saved.description = "已保存的说明" store.mergeSavedPolicy(saved) precondition(store.policies.count == 2) precondition(store.policies[0] == saved) precondition(store.policies[1] == accommodation) var edited = saved edited.active = false precondition(edited != saved) edited = saved edited.materials = [AdminExpenseMaterial(kind: "invoice", name: "发票", hint: "提示", required: true, allowImage: true, allowPDF: true, active: true, sortOrder: 0)] precondition(edited != saved) store.policies = [accommodation] store.mergeSavedPolicy(saved) precondition(store.policies == [accommodation]) print("Policy editor state tests passed") } }