parse-docs.test.js 2.24 KB
import { describe, it, expect } from 'vitest'
import { generateFormSn, generateConfigCode, updateConfigContent } from './parse-docs'

describe('parse-docs 生成逻辑', () => {
    it('generateFormSn 使用产品类型前缀', () => {
        const form_sn = generateFormSn({
            product_name: 'WIOP3E 盈传创富保障计划 3 - 优选版',
            product_type: 'life-insurance'
        })

        expect(form_sn.startsWith('life-insurance-')).toBe(true)
    })

    it('generateConfigCode 储蓄配置包含顶层 category', () => {
        const result = generateConfigCode({
            product_name: '宏挚传承保障计划',
            product_type: 'savings',
            currency: 'USD',
            payment_periods: ['整付'],
            age_range: { min: 0, max: 75 },
            insurance_period: '终身',
            is_savings: true,
            withdrawal_modes: ['年龄指定金额'],
            withdrawal_periods: ['1年']
        })

        expect(result.code.includes("component: 'SavingsTemplate'")).toBe(true)
        expect(result.code.includes("category: 'savings'")).toBe(true)
        expect(result.code.includes("config: {\n      category")).toBe(false)
    })

    it('updateConfigContent 插入到 PLAN_TEMPLATES 末尾', () => {
        const base_content = `export const PLAN_TEMPLATES = {
  'a': {
    name: 'A',
    component: 'LifeInsuranceTemplate',
    config: {
      currency: 'USD',
      payment_periods: [],
      age_range: { min: 0, max: 1 },
      insurance_period: '终身'
    }
  }
}

export const FEATURE_FLAGS = {}`

        const result = updateConfigContent(base_content, [
            {
                code: "  'b': {\n    name: 'B',\n    component: 'SavingsTemplate',\n    category: 'savings',\n    config: {\n      currency: 'USD',\n      payment_periods: [],\n      age_range: { min: 0, max: 1 },\n      insurance_period: '终身',\n      withdrawal_plan: {\n        enabled: true,\n        currencies: ['HKD', 'USD', 'CNY'],\n        default_currency: 'USD',\n        withdrawal_modes: [],\n        withdrawal_periods: []\n      }\n    }\n  }"
            }
        ])

        expect(result).toMatch(/'a'[\s\S]*},\n\s+'b'/)
        expect(result).toMatch(/'b'[\s\S]*}\n\nexport const FEATURE_FLAGS/)
    })
})