123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- import { createVue, destroyVM } from '../util';
- import Vue from 'vue';
- import LoadingRaw from 'packages/loading';
- const Loading = LoadingRaw.service;
- describe('Loading', () => {
- let vm, loadingInstance, loadingInstance2;
- afterEach(() => {
- destroyVM(vm);
- if (loadingInstance) {
- loadingInstance.close();
- loadingInstance.$el &&
- loadingInstance.$el.parentNode &&
- loadingInstance.$el.parentNode.removeChild(loadingInstance.$el);
- }
- if (loadingInstance2) {
- loadingInstance2.close();
- loadingInstance2.$el &&
- loadingInstance2.$el.parentNode &&
- loadingInstance2.$el.parentNode.removeChild(loadingInstance2.$el);
- }
- });
- describe('as a directive', () => {
- it('create', done => {
- vm = createVue({
- template: `
- <div v-loading="loading"></div>
- `,
- data() {
- return {
- loading: true
- };
- }
- });
- Vue.nextTick(() => {
- const mask = vm.$el.querySelector('.el-loading-mask');
- expect(mask).to.exist;
- vm.loading = false;
- setTimeout(() => {
- expect(mask.style.display).to.equal('none');
- done();
- }, 100);
- });
- });
- it('unbind', done => {
- const vm1 = createVue({
- template: `
- <div v-if="show" v-loading="loading"></div>
- `,
- data() {
- return {
- show: true,
- loading: true
- };
- }
- });
- const vm2 = createVue({
- template: `
- <div v-if="show" v-loading.body="loading"></div>
- `,
- data() {
- return {
- show: true,
- loading: true
- };
- }
- });
- Vue.nextTick(() => {
- vm1.loading = false;
- vm2.loading = false;
- Vue.nextTick(() => {
- vm1.show = false;
- vm2.show = false;
- Vue.nextTick(() => {
- expect(document.querySelector('.el-loading-mask')).to.not.exist;
- done();
- });
- });
- });
- });
- it('body', done => {
- vm = createVue({
- template: `
- <div v-loading.body="loading"></div>
- `,
- data() {
- return {
- loading: true
- };
- }
- }, true);
- Vue.nextTick(() => {
- const mask = document.querySelector('.el-loading-mask');
- expect(mask.parentNode === document.body).to.true;
- vm.loading = false;
- document.body.removeChild(mask);
- document.body.removeChild(vm.$el);
- done();
- });
- });
- it('fullscreen', done => {
- vm = createVue({
- template: `
- <div v-loading.fullscreen="loading"></div>
- `,
- data() {
- return {
- loading: true
- };
- }
- }, true);
- Vue.nextTick(() => {
- const mask = document.querySelector('.el-loading-mask');
- expect(mask.parentNode === document.body).to.true;
- expect(mask.classList.contains('is-fullscreen')).to.true;
- vm.loading = false;
- document.body.removeChild(mask);
- document.body.removeChild(vm.$el);
- done();
- });
- });
- it('lock', done => {
- vm = createVue({
- template: `
- <div v-loading.fullscreen.lock="loading"></div>
- `,
- data() {
- return {
- loading: true
- };
- }
- }, true);
- Vue.nextTick(() => {
- expect(document.body.style.overflow).to.equal('hidden');
- vm.loading = false;
- document.body.removeChild(document.querySelector('.el-loading-mask'));
- document.body.removeChild(vm.$el);
- done();
- });
- });
- it('text', done => {
- vm = createVue({
- template: `
- <div v-loading="loading" element-loading-text="拼命加载中"></div>
- `,
- data() {
- return {
- loading: true
- };
- }
- }, true);
- Vue.nextTick(() => {
- const mask = document.querySelector('.el-loading-mask');
- const text = mask.querySelector('.el-loading-text');
- expect(text).to.exist;
- expect(text.textContent).to.equal('拼命加载中');
- done();
- });
- });
- });
- describe('as a service', () => {
- it('create', () => {
- loadingInstance = Loading();
- expect(document.querySelector('.el-loading-mask')).to.exist;
- });
- it('close', () => {
- loadingInstance = Loading();
- loadingInstance.close();
- expect(loadingInstance.visible).to.false;
- });
- it('target', done => {
- vm = createVue({
- template: `
- <div class="loading-container"></div>
- `
- }, true);
- loadingInstance = Loading({ target: '.loading-container' });
- let mask = document.querySelector('.el-loading-mask');
- let container = document.querySelector('.loading-container');
- expect(mask).to.exist;
- expect(mask.parentNode).to.equal(container);
- loadingInstance.close();
- setTimeout(() => {
- expect(container.style.position).to.equal('relative');
- done();
- }, 200);
- });
- it('body', () => {
- vm = createVue({
- template: `
- <div class="loading-container"></div>
- `
- }, true);
- loadingInstance = Loading({
- target: '.loading-container',
- body: true
- });
- let mask = document.querySelector('.el-loading-mask');
- expect(mask).to.exist;
- expect(mask.parentNode).to.equal(document.body);
- });
- it('fullscreen', () => {
- loadingInstance = Loading({ fullScreen: true });
- const mask = document.querySelector('.el-loading-mask');
- expect(mask.parentNode).to.equal(document.body);
- expect(mask.classList.contains('is-fullscreen')).to.true;
- });
- it('fullscreen singleton', done => {
- loadingInstance = Loading({ fullScreen: true });
- setTimeout(() => {
- loadingInstance2 = Loading({ fullScreen: true });
- setTimeout(() => {
- let masks = document.querySelectorAll('.el-loading-mask');
- expect(masks.length).to.equal(1);
- loadingInstance2.close();
- setTimeout(() => {
- masks = document.querySelectorAll('.el-loading-mask');
- expect(masks.length).to.equal(0);
- done();
- }, 350);
- }, 10);
- }, 10);
- });
- it('lock', () => {
- loadingInstance = Loading({ lock: true });
- expect(document.body.style.overflow).to.equal('hidden');
- });
- it('text', () => {
- loadingInstance = Loading({ text: 'Loading...' });
- const text = document.querySelector('.el-loading-text');
- expect(text).to.exist;
- expect(text.textContent).to.equal('Loading...');
- });
- });
- });
|