test-mp-crm-product-confirm-dom.mjs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import assert from 'node:assert/strict'
  2. import { readFile } from 'node:fs/promises'
  3. const root = new URL('../src/views/m/crm/product/', import.meta.url)
  4. const util = await readFile(new URL('../src/utils/mp-crm-confirm.ts', import.meta.url), 'utf8')
  5. const alias = await readFile(new URL('../src/utils/mp-crm-product-confirm.ts', import.meta.url), 'utf8')
  6. const primitives = await readFile(new URL('../src/styles/mp-crm-primitives.scss', import.meta.url), 'utf8')
  7. const list = await readFile(new URL('index.vue', root), 'utf8')
  8. const detail = await readFile(new URL('detail.vue', root), 'utf8')
  9. const categories = await readFile(new URL('categories.vue', root), 'utf8')
  10. assert.match(util, /CrmConfirmKind\s*=\s*'default'\s*\|\s*'danger'/, 'helper 必须支持 danger kind')
  11. assert.match(util, /kind\s*===\s*'danger'/, 'helper 必须分支处理 danger')
  12. assert.match(util, /mp-crm-dialog--danger/, 'helper 必须带 danger className')
  13. assert.match(util, /mp-crm-dialog__title/, '方案 B 标题须写入 HTML')
  14. assert.match(util, /#dc2626/, '删除确认色必须为危险红')
  15. assert.match(util, /#0a9f6d/, '普通确认色必须为三墙绿')
  16. assert.doesNotMatch(util, /round-button/, '禁止 round-button 主题')
  17. assert.doesNotMatch(util, /#10b981/, '禁止 Fresh Mint')
  18. assert.match(alias, /showCrmConfirmDialog as showProductConfirmDialog/, '产品侧须转发共用 helper')
  19. assert.match(primitives, /body \.van-dialog\.mp-crm-dialog/, 'primitives 必须限定 CRM Dialog')
  20. assert.match(primitives, /mp-crm-dialog--danger/, 'primitives 必须覆盖危险确认键')
  21. assert.match(primitives, /mp-crm-dialog__warn-icon/, 'primitives 必须有警示图标')
  22. assert.match(primitives, /mp-crm-dialog__title/, 'primitives 必须有居中标题')
  23. assert.doesNotMatch(primitives, /#10b981/, 'scss 禁止 Fresh Mint')
  24. for (const [name, src] of [
  25. ['index', list],
  26. ['detail', detail],
  27. ['categories', categories]
  28. ]) {
  29. assert.match(src, /showProductConfirmDialog/, `${name} 必须使用 showProductConfirmDialog`)
  30. assert.doesNotMatch(src, /showConfirmDialog\s*\(/, `${name} 不得直接调用 showConfirmDialog`)
  31. }
  32. assert.match(list, /kind:\s*'danger'/, '列表删除必须 danger')
  33. assert.match(list, /kind:\s*'default'/, '列表上下架必须 default')
  34. assert.match(detail, /kind:\s*'danger'/, '详情删除必须 danger')
  35. assert.doesNotMatch(detail, /fetchUpdateProductStatus/, '详情不提供上下架')
  36. assert.match(categories, /kind:\s*'danger'/, '分类删除必须 danger')
  37. assert.match(categories, /删除分类/, '分类删除标题须为删除分类')
  38. console.log('mp-crm-product-confirm-dom: ok')