# all files / test/unit/base/module/ VideoDialog.spec.js

100% Statements 32/32
100% Branches 0/0
100% Functions 7/7
100% Lines 32/32

    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

    1×
    1×
    1×
    1×
    1×

    1×
    1×

    1×
    5×
    5×
    5×
    5×

    1×
    1×
    3×
    3×
    3×

    3×
    3×

    3×

    1×
    1×
    1×
    1×
    1×

    1×

    1×

    1×

    1×

    1×

    1×
    1×

     /**
     * VideoDialog.spec.js
     * (c) 2015~ Summernote Team
     * summernote may be freely distributed under the MIT license./
     */
    import chai from 'chai';
    import $ from 'jquery';
    import Context from '../../../../src/js/base/Context';
    import VideoDialog from '../../../../src/js/base/module/VideoDialog';
    import '../../../../src/js/bs4/settings';

    describe('VideoDialog', () => {
      var expect = chai.expect;

      function expectUrl(source, target) {
        var iframe = $video.createVideoNode(source);
        expect(iframe).to.not.equal(false);
        expect(iframe.tagName).to.equal('IFRAME');
        expect(iframe.src).to.be.have.string(target);
      }

      var context, $video;
      beforeEach(() => {
        var $note = $('<div></div>').appendTo('body');
        var options = $.extend({}, $.summernote.options);
        options.toolbar = [
          ['video', ['video']],
        ];
        context = new Context($note, options);
        context.initialize();

        $video = new VideoDialog(context);
      });

      describe('#createVideoNode', () => {
        it('should get false when insert invalid urls', () => {
          expect($video.createVideoNode('http://www.google.com')).to.equal(false);
          expect($video.createVideoNode('http://www.youtube.com')).to.equal(false);
          expect($video.createVideoNode('http://www.facebook.com')).to.equal(false);
        });

        it('should get proper iframe src when insert valid video urls', () => {
          // YouTube
          expectUrl('https://www.youtube.com/watch?v=jNQXAC9IVRw',
            '//www.youtube.com/embed/jNQXAC9IVRw');
          // Instagram
          expectUrl('https://www.instagram.com/p/Bi9cbsxjn-F',
            '//instagram.com/p/Bi9cbsxjn-F/embed/');
          // v.qq.com
          expectUrl('http://v.qq.com/cover/6/640ewqy2v071ppd.html?vid=f0196y2b2cx',
            '//v.qq.com/iframe/player.html?vid=f0196y2b2cx&amp;auto=0');
          expectUrl('http://v.qq.com/x/page/p0330y279lm.html',
            '//v.qq.com/iframe/player.html?vid=p0330y279lm&amp;auto=0');
        });

        it('should be embedded start parameter when insert YouTube video with t', () => {
          expectUrl('https://youtu.be/wZZ7oFKsKzY?t=4h2m42s',
            '//www.youtube.com/embed/wZZ7oFKsKzY?start=14562');
        });
      });
    });