Skip to content

Commit ad03657

Browse files
committed
ACP2E-2903: Page Builder replaces image when trying to add link and other usability glitches.
1 parent ef047a7 commit ad03657

File tree

2 files changed

+93
-4
lines changed

2 files changed

+93
-4
lines changed

dev/tests/js/jasmine/tests/app/code/Magento/PageBuilder/adminhtml/web/js/content-type/text/preview.test.js

Lines changed: 68 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,19 @@
66
/* eslint-disable max-nested-callbacks */
77
define([
88
'jquery',
9+
'underscore',
910
'Magento_PageBuilder/js/content-type/text/preview'
10-
], function ($, Preview) {
11+
], function ($, _, Preview) {
1112
'use strict';
1213

1314
describe('Magento_PageBuilder/js/content-type/text/preview', function () {
14-
var model;
15+
var model,
16+
config;
1517

1618
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];
1922
$('body').append($(model.element));
2023
});
2124
afterEach(function () {
@@ -96,5 +99,66 @@ define([
9699
expect(model.activateEditor).not.toHaveBeenCalled();
97100
});
98101
});
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+
});
99163
});
100164
});

dev/tests/js/jasmine/tests/app/code/Magento/PageBuilder/adminhtml/web/js/utils/editor.test.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,30 @@ define([
5959
expect(content).toEqual('<div id="x" data-t1="1"><span id="y"></span></div>');
6060
});
6161
});
62+
63+
describe('moveToBookmark', function () {
64+
var originalTinymce = window.tinymce;
65+
66+
beforeEach(function () {
67+
window.tinymce = {
68+
activeEditor: {
69+
selection: {
70+
moveToBookmark: jasmine.createSpy('moveToBookmark')
71+
},
72+
nodeChanged: jasmine.createSpy('nodeChanged')
73+
}
74+
};
75+
});
76+
afterEach(function () {
77+
originalTinymce && (window.tinymce = originalTinymce);
78+
});
79+
it('Should call activeEditor.selection.moveToBookmark and activeEditor.nodeChanged', function () {
80+
var bookmark = {id: 'test'};
81+
82+
utils.moveToBookmark(bookmark);
83+
expect(utils.getActiveEditor().selection.moveToBookmark).toHaveBeenCalledWith(bookmark);
84+
expect(utils.getActiveEditor().nodeChanged).toHaveBeenCalled();
85+
});
86+
});
6287
});
6388
});

0 commit comments

Comments
 (0)