all files / test/unit/base/ Context.spec.js

100% Statements 55/55
50% Branches 1/2
100% Functions 8/8
100% Lines 54/54
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87                                                                 
/**
 * Context.spec.js
 * (c) 2015~ Summernote Team
 * summernote may be freely distributed under the MIT license./
 */
import chai from 'chai';
import spies from 'chai-spies';
 
/* eslint-disable import/first */
import $ from 'jquery'; window.jQuery = $;
import 'bootstrap';
import chaidom from '../../chaidom';
import env from '../../../src/js/base/core/env';
import Context from '../../../src/js/base/Context';
/* eslint-enable import/first */
 
var expect = chai.expect;
chai.use(spies);
chai.use(chaidom);
 
describe('Context lifecycle', () => {
  it('should be initialized without calling callback', () => {
    var options = $.extend({}, $.summernote.options);
    options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]);
 
    var spy = chai.spy();
    var $note = $('<div><p>hello</p></div>');
    $note.on('summernote.change', spy);
 
    var context = new Context($note, options);
    expect(spy).to.have.not.been.called();
 
    // [workaround]
    //  - IE8-11 can't create range in headless mode
    Eif (!env.isMSIE) {
      context.invoke('insertText', 'hello');
      expect(spy).to.have.been.called();
    }
  });
 
  it('should preserve user events handler after destroy', () => {
    var options = $.extend({}, $.summernote.options);
    options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]);
 
    var spy = chai.spy();
    var $note = $('<div><p>hello</p></div>');
    $note.on('click', spy);
 
    var context = new Context($note, options);
    context.destroy();
 
    $note.trigger('click');
    expect(spy).to.have.been.called();
  });
});
 
describe('Context', () => {
  var context;
  beforeEach(() => {
    var options = $.extend({}, $.summernote.options);
    options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]);
    context = new Context($('<div><p>hello</p></div>'), options);
  });
 
  it('should get or set contents with code', () => {
    expect(context.code()).to.equalsIgnoreCase('<p>hello</p>');
    context.code('<p>hello2</p>');
    expect(context.code()).to.equalsIgnoreCase('<p>hello2</p>');
  });
 
  it('should enable or disable editor', () => {
    expect(context.isDisabled()).to.be.false;
    context.disable();
    expect(context.isDisabled()).to.be.true;
    context.enable();
    expect(context.isDisabled()).to.be.false;
  });
 
  it('should preserve disabled status after reset', () => {
    expect(context.isDisabled()).to.be.false;
    context.disable();
    expect(context.isDisabled()).to.be.true;
    context.reset();
    expect(context.isDisabled()).to.be.true;
  });
});