#!/usr/bin/env node 'use strict' const assert = require('assert') const { normalizeCmsList, cmsLstToDelta, createVoteId, getArticleText, getArticleImages, hasRenderableContent } = require('../uniCloud-alipay/cloudfunctions/uni-cms-articles/content-adapter') function run() { const list = normalizeCmsList([ { type: 'text', text: '首段', delta: { ops: [{ insert: '首段' }, { insert: '\n' }] } }, { type: 'title', text: '小标题', html: '
小标题
', delta: { ops: [{ insert: '小标题' }] } }, { type: 'image', image: { src: 'cloud://image-a' } }, { type: 'video', text: '视频说明', video: { src: 'cloud://video-a', poster: 'cloud://poster-a', duration: 12 } }, { type: 'vote', vote: { voteTitle: '投票', voteLst: [{ value: 'A' }, { value: 'B' }] } }, { type: 'text', text: '' }, { type: 'image', image: { src: '' } } ]) assert.strictEqual(list.length, 5) assert.strictEqual(typeof list[2].image.src, 'string') assert.strictEqual(typeof list[3].video.src, 'string') assert.match(list[4].vote.vote_id, /^vote_/) const delta = cmsLstToDelta(list) assert.ok(Array.isArray(delta.ops)) assert.ok(delta.ops.some(op => op.insert && op.insert.image === 'cloud://image-a')) assert.ok(delta.ops.some(op => op.insert && op.insert.video === 'cloud://video-a')) assert.ok(hasRenderableContent(delta, list)) assert.match(getArticleText(delta, list), /首段/) assert.match(getArticleText(delta, list), /小标题/) assert.deepStrictEqual(getArticleImages(delta, list).sort(), ['cloud://image-a', 'cloud://poster-a']) assert.notStrictEqual(createVoteId(), createVoteId()) console.log('✓ 文章内容适配自测通过(cmsLst / Delta / 媒体 / 投票)') } if (require.main === module) run() module.exports = { run }