Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-book
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-book
Commits
40d98862
提交
40d98862
authored
7月 22, 2026
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
test(admin): characterize editor node serialization
上级
cd66c024
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
43 行增加
和
0 行删除
+43
-0
node-serialization.test.ts
...n/src/test/wangeditor-customer/node-serialization.test.ts
+43
-0
没有找到文件。
apps/admin/src/test/wangeditor-customer/node-serialization.test.ts
0 → 100644
浏览文件 @
40d98862
import
{
describe
,
expect
,
it
}
from
'vitest'
import
{
editorFeatureRegistry
}
from
'@/common/wangeditor-customer/features'
const
galleryList
=
encodeURI
(
JSON
.
stringify
([{
url
:
'https://example.test/image.png'
,
title
:
'Image'
}]))
const
fixtures
=
{
chapterImage
:
{
type
:
'chapterImage'
,
title
:
'Image title'
,
imgUrl
:
'https://example.test/image.png'
,
imgDescript
:
'Image description'
,
children
:
[{
text
:
''
}]
},
chapterVideo
:
{
type
:
'chapterVideo'
,
title
:
'Video title'
,
videoUrl
:
'https://example.test/video.mp4'
,
children
:
[{
text
:
''
}]
},
chapterAudio
:
{
type
:
'chapterAudio'
,
title
:
'Audio title'
,
audioUrl
:
'https://example.test/audio.mp3'
,
children
:
[{
text
:
''
}]
},
chapterGallery
:
{
type
:
'chapterGallery'
,
title
:
'Gallery title'
,
galleryList
,
random
:
'gallery-1'
,
flex
:
1
,
theme
:
'#123456'
,
children
:
[{
text
:
''
}]
},
chapterGalleryInline
:
{
type
:
'chapterGalleryInline'
,
title
:
'Inline gallery'
,
galleryList
,
random
:
'gallery-2'
,
flex
:
1
,
theme
:
'#123456'
,
fontsize
:
18
,
children
:
[{
text
:
''
}]
},
chapterFormula
:
{
type
:
'chapterFormula'
,
formulaHtml
:
'<svg><text>x</text></svg>'
,
children
:
[{
text
:
''
}]
},
}
const
expectedFields
=
{
chapterImage
:
[
'title'
,
'imgUrl'
,
'imgDescript'
],
chapterVideo
:
[
'title'
,
'videoUrl'
],
chapterAudio
:
[
'title'
,
'audioUrl'
],
chapterGallery
:
[
'title'
,
'galleryList'
,
'random'
,
'flex'
],
chapterGalleryInline
:
[
'title'
,
'galleryList'
,
'random'
,
'flex'
,
'theme'
,
'fontsize'
],
chapterFormula
:
[
'formulaHtml'
],
}
const
configFor
=
type
=>
{
const
entry
=
editorFeatureRegistry
.
nodeModules
.
find
(
item
=>
item
.
types
.
includes
(
type
))
return
{
toHtml
:
entry
.
module
.
elemsToHtml
.
find
(
item
=>
item
.
type
===
type
).
elemToHtml
,
parse
:
entry
.
module
.
parseElemsHtml
.
find
(
item
=>
item
.
selector
.
includes
(
type
)).
parseElemHtml
,
}
}
describe
(
'custom node serialization'
,
()
=>
{
it
.
each
(
Object
.
keys
(
fixtures
))(
'%s preserves its identifying fields'
,
type
=>
{
const
fixture
=
fixtures
[
type
]
const
{
toHtml
,
parse
}
=
configFor
(
type
)
const
container
=
document
.
createElement
(
'div'
)
container
.
innerHTML
=
toHtml
(
fixture
,
''
)
const
parsed
=
parse
(
container
.
firstElementChild
,
[],
{})
expectedFields
[
type
].
forEach
(
field
=>
expect
(
String
(
parsed
[
field
])).
toBe
(
String
(
fixture
[
field
])))
})
})
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论