From 3303f1e8e56c4d8c24c87e91699b71fa7c1ed250 Mon Sep 17 00:00:00 2001 From: wangsongc Date: Fri, 29 Jan 2021 17:44:17 +0800 Subject: [PATCH] add left-toolbars test --- tests/unit/button.spec.js | 252 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 252 insertions(+) create mode 100644 tests/unit/button.spec.js diff --git a/tests/unit/button.spec.js b/tests/unit/button.spec.js new file mode 100644 index 000000000..9dd47e078 --- /dev/null +++ b/tests/unit/button.spec.js @@ -0,0 +1,252 @@ +import { mount } from '@vue/test-utils' +import MavonEditor from '@/mavon-editor.vue' +import autoTextarea from 'auto-textarea/auto-textarea.vue' + +/*eslint-disable */ +const factory = (propsData, mocks) => { + return mount(MavonEditor, { + propsData: { + ...propsData + }, + mocks: { + ...mocks + }, + stubs: { + "v-autoTextarea": autoTextarea + } + }) +} +let textValueClass = '.auto-textarea-block' +let htmlValueClass = '.v-show-content-html.scroll-style.scroll-style-border-radius' +describe.only('toolbars测试', () => { + let wrapper + function checkButton(buttonClass, inputValue, htmlValue) { + expect(wrapper.find(buttonClass).exists()).toBe(true) + wrapper.find(buttonClass).trigger('click') + wrapper.vm.$nextTick(() => { + expect(wrapper.find(textValueClass).text()).toEqual(inputValue) + expect(wrapper.find(htmlValueClass).text()).toEqual(htmlValue) + }) + } + + beforeEach(() => { + wrapper = new factory({ d_words: null, value: " " }) + }) + afterEach(() => { + wrapper.destroy() + }) + + it('粗体按钮', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-bold' + let eInputValue = '**粗体**' + let eHtmlValue = '

粗体

' + expect.assertions(6) + await checkButton(buttonClass, eInputValue, eHtmlValue) + eInputValue = '粗体' + eHtmlValue = '

粗体

' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('斜体按钮', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-italic' + let eInputValue = '*斜体*' + let eHtmlValue = '

斜体

' + await checkButton(buttonClass, eInputValue, eHtmlValue) + eInputValue = '斜体' + eHtmlValue = '

斜体

' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('标题按钮', async () => { + let buttonClass = '.op-header.popup-dropdown.transition span' + let eInputValue = '# 一级标题' + let eHtmlValue = '

一级标题

' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('下划线按钮', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-underline' + let eInputValue = '++下划线++' + let eHtmlValue = '

下划线

' + await checkButton(buttonClass, eInputValue, eHtmlValue) + eInputValue = '下划线' + eHtmlValue = '

下划线

' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('下划线按钮', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-underline' + let eInputValue = '++下划线++' + let eHtmlValue = '

下划线

' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('中划线按钮', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-strikethrough' + let eInputValue = '~~中划线~~' + let eHtmlValue = '

中划线

' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('标记按钮', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-thumb-tack' + let eInputValue = '==标记==' + let eHtmlValue = '

标记

' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('上角标按钮', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-superscript' + let eInputValue = '^上角标^' + let eHtmlValue = '

上角标

' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('下角标按钮', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-subscript' + let eInputValue = '~下角标~' + let eHtmlValue = '

下角标

' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('居左按钮', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-align-left' + let eInputValue = '::: hljs-left\n\n居左\n\n:::' + let eHtmlValue = '
\n

居左

\n
' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('居中按钮', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-align-center' + let eInputValue = '::: hljs-center\n\n居中\n\n:::' + let eHtmlValue = '
\n

居中

\n
' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('居右按钮', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-align-right' + let eInputValue = '::: hljs-right\n\n居右\n\n:::' + let eHtmlValue = '
\n

居右

\n
' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('段落引用', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-quote-left' + let eInputValue = '> 段落引用' + let eHtmlValue = '
\n

段落引用

\n
' + await checkButton(buttonClass, eInputValue, eHtmlValue) + eInputValue = '段落引用' + eHtmlValue = '

段落引用

' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('有序列表', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-list-ol' + let eInputValue = '1.' + let eHtmlValue = '
    \n
  1. \n
' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('无序列表', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-list-ul' + let eInputValue = '-' + let eHtmlValue = '' + + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('链接', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-link' + let linktext = '.link-text.input-wrapper input' + let linkaddr = '.link-addr.input-wrapper input' + let surebutten = '.op-btn.sure' + let eInputValue = '[mylink](http://xxx.com)' + let eHtmlValue = '

mylink

' + + await wrapper.find(buttonClass).trigger('click') + wrapper.find(linktext).setValue('mylink') + wrapper.find(linkaddr).setValue('http://xxx.com') + await wrapper.find(surebutten).trigger('click') + + expect(wrapper.find(textValueClass).text()).toEqual(eInputValue) + expect(wrapper.find(htmlValueClass).text()).toEqual(eHtmlValue) + }) + + it('图片链接添加', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-picture-o.dropdown.dropdown-wrapper' + let addimagelink = '.op-image.popup-dropdown.transition div span' + let linktext = '.link-text.input-wrapper input' + let linkaddr = '.link-addr.input-wrapper input' + let surebutten = '.op-btn.sure' + let eInputValue = '![mylink](http://xxx.com)' + let eHtmlValue = '

mylink

' + + await wrapper.find(buttonClass).trigger('click') + await wrapper.find(addimagelink).trigger('click') + wrapper.find(linktext).setValue('mylink') + wrapper.find(linkaddr).setValue('http://xxx.com') + await wrapper.find(surebutten).trigger('click') + + expect(wrapper.find(textValueClass).text()).toEqual(eInputValue) + expect(wrapper.find(htmlValueClass).text()).toEqual(eHtmlValue) + }) + + it('代码块', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-code' + let eInputValue = '```\nlanguage\n\n```' + let eHtmlValue = '
language\n\n
' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('表格', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-table' + let eInputValue = `|column1|column2|column3|\n|-|-|-|\n|content1|content2|content3|` + let eHtmlValue = '\n' + + '\n' + + '\n' + + '\n' + + '\n' + + '\n' + + '\n' + + '\n' + + '\n' + + '\n' + + '\n' + + '\n' + + '\n' + + '\n' + + '\n' + + '
column1column2column3
content1content2content3
' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('上一步/下一步', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-undo' + let eInputValue = 'first' + let eHtmlValue = '

first

' + await wrapper.setData({ + d_history: ['first', 'second', 'third'], + d_history_index: 1 + }) + + await checkButton(buttonClass, eInputValue, eHtmlValue) + buttonClass = '.op-icon.fa.fa-mavon-repeat' + eInputValue = 'second' + eHtmlValue = '

second

' + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('清空', async () => { + let buttonClass = '.op-icon.fa.fa-mavon-trash-o' + let eInputValue = '' + let eHtmlValue = '' + await wrapper.setData({ d_value: 'first' }) + await checkButton(buttonClass, eInputValue, eHtmlValue) + }) + + it('保存', () => { + let buttonClass = '.op-icon.fa.fa-mavon-trash-o' + //检查字体加粗元素是否渲染 + expect(wrapper.find(buttonClass).exists()).toBe(true) + }) +}) \ No newline at end of file