|
6 | 6 | /* eslint-disable max-nested-callbacks */
|
7 | 7 | define([
|
8 | 8 | 'jquery',
|
| 9 | + 'underscore', |
9 | 10 | 'Magento_PageBuilder/js/content-type/text/preview'
|
10 |
| -], function ($, Preview) { |
| 11 | +], function ($, _, Preview) { |
11 | 12 | 'use strict';
|
12 | 13 |
|
13 | 14 | describe('Magento_PageBuilder/js/content-type/text/preview', function () {
|
14 |
| - var model; |
| 15 | + var model, |
| 16 | + config; |
15 | 17 |
|
16 | 18 | beforeEach(function () {
|
17 |
| - model = new Preview({dataStore: {subscribe: jasmine.createSpy()}}, {}); |
18 |
| - model.element = $('<div contenteditable="true">This text can be edited.</div>')[0]; |
| 19 | + config = {}; |
| 20 | + model = new Preview({dataStore: {subscribe: jasmine.createSpy()}}, config); |
| 21 | + model.element = $('<div id="pb-text-content" contenteditable="true">This text can be edited.</div>')[0]; |
19 | 22 | $('body').append($(model.element));
|
20 | 23 | });
|
21 | 24 | afterEach(function () {
|
@@ -96,5 +99,66 @@ define([
|
96 | 99 | expect(model.activateEditor).not.toHaveBeenCalled();
|
97 | 100 | });
|
98 | 101 | });
|
| 102 | + |
| 103 | + describe('initWysiwygFromClick()', function () { |
| 104 | + var originalDeferFn = _.defer, |
| 105 | + editor; |
| 106 | + |
| 107 | + beforeEach(function () { |
| 108 | + config.additional_data = { |
| 109 | + wysiwygConfig: { |
| 110 | + wysiwygConfigData: { |
| 111 | + adapter: { |
| 112 | + settings: { |
| 113 | + |
| 114 | + } |
| 115 | + } |
| 116 | + } |
| 117 | + } |
| 118 | + }; |
| 119 | + editor = { |
| 120 | + on: function (event, callback) { |
| 121 | + $(model.element).on(event, callback); |
| 122 | + }, |
| 123 | + dom: { |
| 124 | + getRoot: jasmine.createSpy('getRoot').and.returnValue(model.element) |
| 125 | + }, |
| 126 | + selection: { |
| 127 | + select: jasmine.createSpy('select') |
| 128 | + }, |
| 129 | + nodeChanged: jasmine.createSpy('nodeChanged') |
| 130 | + }; |
| 131 | + _.defer = jasmine.createSpy('_.defer'); |
| 132 | + }); |
| 133 | + afterEach(function () { |
| 134 | + _.defer = originalDeferFn; |
| 135 | + }); |
| 136 | + it('Should select image on mousedown', function () { |
| 137 | + var editorSettings = config.additional_data.wysiwygConfig.wysiwygConfigData.adapter.settings, |
| 138 | + img = document.createElement('img'); |
| 139 | + |
| 140 | + $(model.element).append(img); |
| 141 | + model.initWysiwygFromClick(true); |
| 142 | + expect(editorSettings.auto_focus).toEqual(model.element.id); |
| 143 | + expect(editorSettings.init_instance_callback).toBeInstanceOf(Function); |
| 144 | + editorSettings.init_instance_callback(editor); |
| 145 | + $(img).trigger('mousedown'); |
| 146 | + expect(editor.selection.select).toHaveBeenCalledWith(img); |
| 147 | + expect(editor.nodeChanged).toHaveBeenCalled(); |
| 148 | + }); |
| 149 | + it('Should not select image if right button of the mouse is clicked', function () { |
| 150 | + var editorSettings = config.additional_data.wysiwygConfig.wysiwygConfigData.adapter.settings, |
| 151 | + img = document.createElement('img'); |
| 152 | + |
| 153 | + $(model.element).append(img); |
| 154 | + model.initWysiwygFromClick(true); |
| 155 | + expect(editorSettings.auto_focus).toEqual(model.element.id); |
| 156 | + expect(editorSettings.init_instance_callback).toBeInstanceOf(Function); |
| 157 | + editorSettings.init_instance_callback(editor); |
| 158 | + $(img).trigger($.Event('mousedown', {button: 2})); |
| 159 | + expect(editor.selection.select).not.toHaveBeenCalled(); |
| 160 | + expect(editor.nodeChanged).not.toHaveBeenCalled(); |
| 161 | + }); |
| 162 | + }); |
99 | 163 | });
|
100 | 164 | });
|
0 commit comments