123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- import Clickoutside from 'element-ui/src/utils/clickoutside';
- const ctx = '@@clickoutsideContext';
- import { triggerEvent, triggerClick } from '../util';
- describe('Utils:Clickoutside', () => {
- it('create', () => {
- let count = 0;
- const el = document.createElement('div');
- const vnode = {
- context: {
- handleClick: () => ++count
- }
- };
- const binding = {
- expression: 'handleClick'
- };
- Clickoutside.bind(el, binding, vnode);
- expect(el[ctx]).to.exist;
- });
- it('cotext not exist', () => {
- const el = document.createElement('div');
- const vnode = {};
- const binding = {
- expression: 'handleClick'
- };
- Clickoutside.bind(el, binding, vnode);
- expect(el[ctx]).to.exist;
- });
- it('binding expression', () => {
- const el = document.createElement('div');
- let count = 0;
- const vnode = {
- context: {
- handleClick: () => ++count
- }
- };
- const binding = {
- expression: 'handleClick'
- };
- Clickoutside.bind(el, binding, vnode);
- triggerClick(document);
- expect(count).to.equal(1);
- });
- it('click inside', () => {
- const el = document.createElement('div');
- const insideElm = document.createElement('div');
- let count = 0;
- const vnode = {
- context: {
- handleClick: () => ++count
- }
- };
- const binding = {
- expression: 'handleClick'
- };
- el.appendChild(insideElm);
- Clickoutside.bind(el, binding, vnode);
- triggerClick(insideElm);
- expect(count).to.equal(0);
- triggerClick(document);
- expect(count).to.equal(1);
- });
- it('tigger event in popperElm', () => {
- const el = document.createElement('div');
- const insideElm = document.createElement('div');
- let count = 0;
- const vnode = {
- context: {
- handleClick: () => ++count,
- popperElm: document.createElement('div')
- }
- };
- const binding = {
- expression: 'handleClick'
- };
- vnode.context.popperElm.appendChild(insideElm);
- Clickoutside.bind(el, binding, vnode);
- triggerClick(insideElm);
- expect(count).to.equal(0);
- triggerClick(document);
- expect(count).to.equal(1);
- });
- it('binding value', () => {
- const el = document.createElement('div');
- let count = 0;
- const vnode = {
- context: {}
- };
- const binding = {
- value: () => ++count
- };
- Clickoutside.bind(el, binding, vnode);
- expect(count).to.equal(0);
- triggerClick(document);
- expect(count).to.equal(1);
- });
- it('update', () => {
- let count = 0;
- const el = document.createElement('div');
- const vnode = {
- context: {
- abc: () => ++count,
- ddd: () => ++count
- }
- };
- const binding = {
- expression: 'abc'
- };
- const newBinding = {
- expression: 'ddd'
- };
- Clickoutside.bind(el, binding, vnode);
- expect(el[ctx].methodName).to.equal('abc');
- Clickoutside.update(el, newBinding);
- expect(el[ctx].methodName).to.equal('ddd');
- });
- it('unbind', () => {
- const el = document.createElement('div');
- let count = 0;
- const vnode = {
- context: {}
- };
- const binding = {
- value: () => ++count
- };
- Clickoutside.bind(el, binding, vnode);
- triggerClick(document);
- Clickoutside.unbind(el);
- triggerClick(document);
- expect(count).to.equal(1);
- });
- it('stays open on drag click', () => {
- const el = document.createElement('div');
- const insideElm = document.createElement('div');
- let count = 0;
- const vnode = {
- context: {
- handleClick: () => ++count
- }
- };
- const binding = {
- expression: 'handleClick'
- };
- el.appendChild(insideElm);
- Clickoutside.bind(el, binding, vnode);
- triggerEvent(insideElm, 'mousedown');
- triggerEvent(document, 'mouseup');
- expect(count).to.equal(1);
- });
- });
|