JAVASCRIPT   103

clipboard.js

Guest on 31st July 2021 07:00:14 AM

  1. import Clipboard from '../src/clipboard';
  2. import ClipboardAction from '../src/clipboard-action';
  3. import listen from 'good-listener';
  4.  
  5. describe('Clipboard', () => {
  6.     before(() => {
  7.         global.button = document.createElement('button');
  8.         global.button.setAttribute('class', 'btn');
  9.         global.button.setAttribute('data-clipboard-text', 'foo');
  10.         document.body.appendChild(global.button);
  11.  
  12.         global.span = document.createElement('span');
  13.         global.span.innerHTML = 'bar';
  14.  
  15.         global.button.appendChild(span);
  16.  
  17.         global.event = {
  18.             target: global.button,
  19.             currentTarget: global.button
  20.         };
  21.     });
  22.  
  23.     after(() => {
  24.         document.body.innerHTML = '';
  25.     });
  26.  
  27.     describe('#resolveOptions', () => {
  28.         before(() => {
  29.             global.fn = function() {};
  30.         });
  31.  
  32.         it('should set action as a function', () => {
  33.             let clipboard = new Clipboard('.btn', {
  34.                 action: global.fn
  35.             });
  36.  
  37.             assert.equal(global.fn, clipboard.action);
  38.         });
  39.  
  40.         it('should set target as a function', () => {
  41.             let clipboard = new Clipboard('.btn', {
  42.                 target: global.fn
  43.             });
  44.  
  45.             assert.equal(global.fn, clipboard.target);
  46.         });
  47.  
  48.         it('should set text as a function', () => {
  49.             let clipboard = new Clipboard('.btn', {
  50.                 text: global.fn
  51.             });
  52.  
  53.             assert.equal(global.fn, clipboard.text);
  54.         });
  55.     });
  56.  
  57.     describe('#listenClick', () => {
  58.         it('should add a click event listener to the passed selector', () => {
  59.             let clipboard = new Clipboard('.btn');
  60.             assert.isObject(clipboard.listener);
  61.         });
  62.     });
  63.  
  64.     describe('#onClick', () => {
  65.         it('should create a new instance of ClipboardAction', () => {
  66.             let clipboard = new Clipboard('.btn');
  67.  
  68.             clipboard.onClick(global.event);
  69.             assert.instanceOf(clipboard.clipboardAction, ClipboardAction);
  70.         });
  71.  
  72.         it('should use an event\'s currentTarget when not equal to target', () => {
  73.             let clipboard = new Clipboard('.btn');
  74.             let bubbledEvent = { target: global.span, currentTarget: global.button };
  75.  
  76.             clipboard.onClick(bubbledEvent);
  77.             assert.instanceOf(clipboard.clipboardAction, ClipboardAction);
  78.         });
  79.  
  80.         it('should throws exception target', done => {
  81.             try {
  82.                 var clipboard = new Clipboard('.btn', {
  83.                     target: function() {
  84.                         return null;
  85.                     }
  86.                 });
  87.  
  88.                 clipboard.onClick(global.event);
  89.             }
  90.             catch(e) {
  91.                 assert.equal(e.message, 'Invalid "target" value, use a valid Element');
  92.                 done();
  93.             }
  94.         });
  95.     });
  96.  
  97.     describe('#destroy', () => {
  98.         it('should destroy an existing instance of ClipboardAction', () => {
  99.             let clipboard = new Clipboard('.btn');
  100.  
  101.             clipboard.onClick(global.event);
  102.             clipboard.destroy();
  103.  
  104.             assert.equal(clipboard.clipboardAction, null);
  105.         });
  106.     });
  107. });

Raw Paste


Login or Register to edit or fork this paste. It's free.