From 76d514914dd9adaeb80f1157fa55276a12bf5b12 Mon Sep 17 00:00:00 2001 From: wuls Date: Sat, 19 Dec 2020 20:35:14 +0800 Subject: [PATCH 1/5] =?UTF-8?q?refactor(messageBox):=20=E9=87=8D=E6=9E=84m?= =?UTF-8?q?essagebox=E7=BB=84=E4=BB=B6=E4=B8=AD=E7=9A=84title=E5=92=8C?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__tests__/MessageBoxvue.spec.js | 135 +++++ .../packages/message-box/src/MessageBox.js | 3 +- .../packages/message-box/src/MessageBox.vue | 419 +++------------ .../packages/message-box/src/MessageBox6.vue | 492 ++++++++++++++++++ packages/element3/src/use/popup.js | 9 +- 5 files changed, 704 insertions(+), 354 deletions(-) create mode 100644 packages/element3/packages/message-box/__tests__/MessageBoxvue.spec.js create mode 100644 packages/element3/packages/message-box/src/MessageBox6.vue diff --git a/packages/element3/packages/message-box/__tests__/MessageBoxvue.spec.js b/packages/element3/packages/message-box/__tests__/MessageBoxvue.spec.js new file mode 100644 index 000000000..d5a726e5a --- /dev/null +++ b/packages/element3/packages/message-box/__tests__/MessageBoxvue.spec.js @@ -0,0 +1,135 @@ +import { mount } from '@vue/test-utils' +import { nextTick } from 'vue' +import MessageBox from '../src/MessageBox.vue' +describe('MessageBox.vue', () => { + describe('proprety', () => { + it('proprety title', () => { + const warpper = mount(MessageBox, { + props: { + title: 'chushihua' + } + }) + expect(warpper.find('.el-message-box__title').text()).toBe('chushihua') + }) + it('proprety center', () => { + const warpper = mount(MessageBox, { + props: { + center: true + } + }) + expect(warpper.find('.el-message-box--center').exists()).toBeTruthy() + }) + it('proprety customClass', () => { + const warpper = mount(MessageBox, { + props: { + customClass: 'customClass' + } + }) + expect(warpper.find('.customClass').exists()).toBeTruthy() + }) + it('proprety iconClass', () => { + const warpper = mount(MessageBox, { + props: { + iconClass: 'iconClass' + } + }) + expect(warpper.vm.icon).toBe('iconClass') + }) + it('iconclass with center', () => { + const warpper = mount(MessageBox, { + props: { + iconClass: 'iconClass', + center: true, + title: 'title' + } + }) + expect(warpper.find('.iconClass').exists()).toBeTruthy() + }) + it('proprety type', () => { + const warpper = mount(MessageBox, { + props: { + title: 'title', + center: true + } + }) + expect(warpper.find('.el-icon-info').exists()).toBeTruthy() + }) + it('showClose', () => { + const warpper = mount(MessageBox, { + props: { + title: '12', + showClose: false + } + }) + expect(warpper.find('.el-message-box__headerbtn').exists()).toBeFalsy() + }) + it('showClose toBeTruthy', () => { + const warpper = mount(MessageBox, { + props: { + title: '12' + } + }) + expect(warpper.find('.el-message-box__headerbtn').exists()).toBeTruthy() + }) + it('proprety beforeClose', async () => { + let object = {} + const warpper = mount(MessageBox, { + props: { + title: '12', + beforeClose: (action, instance, done) => { + object.action = action + object.instance = instance + object.done = done + } + } + }) + await warpper.find('.el-message-box__headerbtn').trigger('click') + expect(warpper.componentVM).toEqual(object.instance) + expect(object.action).toBe('cancel') + }) + it('review messageBox when value was done', async () => { + const warpper = mount(MessageBox, { + props: { + title: '12', + beforeClose: (action, instance, done) => { + done() + } + } + }) + await warpper.find('.el-message-box__headerbtn').trigger('click') + expect(warpper.find('.el-message-box__headerbtn').isVisible()).toBeFalsy() + expect(warpper.find('.v-modal').exists()).toBeFalsy() + }) + it('showClose lockScroll', () => { + document.body.classList.remove('el-popup-parent--hidden') + mount(MessageBox, { + props: { + title: '12', + lockScroll: false + }, + attachTo: document.getElementById('body') + }) + expect(document.body.className).not.toBe('el-popup-parent--hidden') + }) + it('meesage of normal', () => { + const warpper = mount(MessageBox, { + props: { + message: '333' + } + }) + console.log() + expect(warpper.componentVM.getMessage.message).toBe('333') + }) + }) + describe('test modal', () => { + it('open modal', async () => { + const warpper = mount(MessageBox, { + props: { + modal: true + } + }) + await nextTick() + expect(warpper.find('.v-modal').exists()).toBeTruthy() + }) + }) +}) diff --git a/packages/element3/packages/message-box/src/MessageBox.js b/packages/element3/packages/message-box/src/MessageBox.js index cdf0afc8c..275f53b4e 100644 --- a/packages/element3/packages/message-box/src/MessageBox.js +++ b/packages/element3/packages/message-box/src/MessageBox.js @@ -67,7 +67,6 @@ const defaultCallback = (action) => { } } } - const initInstance = (currentMsg, VNode = null) => { defaults.callback = defaultCallback instance = createComponent(messageBoxConstructor, currentMsg.options, VNode) @@ -102,6 +101,7 @@ const showNextMsg = () => { options[prop] = true } }) + document.body.appendChild(instance.vnode.el) } // } @@ -156,6 +156,7 @@ MessageBox.alert = (message, title, options) => { merge( { title: title, + modal: true, message: message, _type: 'alert', closeOnPressEscape: false, diff --git a/packages/element3/packages/message-box/src/MessageBox.vue b/packages/element3/packages/message-box/src/MessageBox.vue index 4aaf4409a..b6564b075 100644 --- a/packages/element3/packages/message-box/src/MessageBox.vue +++ b/packages/element3/packages/message-box/src/MessageBox.vue @@ -1,12 +1,11 @@