Skip to content

Commit db8e5dd

Browse files
committed
ACP2E-1441: Duplicated page builder elements are not being updated on save
1 parent 3850edf commit db8e5dd

File tree

1 file changed

+100
-0
lines changed
  • dev/tests/js/jasmine/tests/app/code/Magento/PageBuilder/adminhtml/web/js/content-type/text

1 file changed

+100
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/**
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
/* eslint-disable max-nested-callbacks */
7+
define([
8+
'jquery',
9+
'Magento_PageBuilder/js/content-type/text/preview'
10+
], function ($, Preview) {
11+
'use strict';
12+
13+
describe('Magento_PageBuilder/js/content-type/text/preview', function () {
14+
var model;
15+
16+
beforeEach(function () {
17+
model = new Preview({dataStore: {subscribe: jasmine.createSpy()}}, {});
18+
model.element = $('<div contenteditable="true">This text can be edited.</div>')[0];
19+
$('body').append($(model.element));
20+
});
21+
afterEach(function () {
22+
$(model.element).remove();
23+
delete model.element;
24+
});
25+
describe('handleMouseDown()', function () {
26+
it('Should call activateEditor() if mouseup occurred outside the element', function () {
27+
model.activateEditor = jasmine.createSpy();
28+
$(model.element).on('mousedown', function (event) {
29+
model.element.focus();
30+
return model.handleMouseDown(model, event);
31+
});
32+
model.element.dispatchEvent(new MouseEvent('mousedown', {
33+
view: window,
34+
bubbles: true,
35+
cancelable: true
36+
}));
37+
document.dispatchEvent(new MouseEvent('mouseup', {
38+
view: window,
39+
bubbles: true,
40+
cancelable: true
41+
}));
42+
expect(model.activateEditor).toHaveBeenCalled();
43+
});
44+
it('Should not call activateEditor() if mouseup occurred inside the element', function () {
45+
model.activateEditor = jasmine.createSpy();
46+
$(model.element).on('mousedown', function (event) {
47+
model.element.focus();
48+
return model.handleMouseDown(model, event);
49+
});
50+
model.element.dispatchEvent(new MouseEvent('mousedown', {
51+
view: window,
52+
bubbles: true,
53+
cancelable: true
54+
}));
55+
model.element.dispatchEvent(new MouseEvent('mouseup', {
56+
view: window,
57+
bubbles: true,
58+
cancelable: true
59+
}));
60+
expect(model.activateEditor).not.toHaveBeenCalled();
61+
});
62+
it('Should not call activateEditor() if the editor is already activated', function () {
63+
model.activateEditor = jasmine.createSpy();
64+
model.wysiwyg = jasmine.createSpyObj(['getAdapter']);
65+
$(model.element).on('mousedown', function (event) {
66+
model.element.focus();
67+
return model.handleMouseDown(model, event);
68+
});
69+
model.element.dispatchEvent(new MouseEvent('mousedown', {
70+
view: window,
71+
bubbles: true,
72+
cancelable: true
73+
}));
74+
document.dispatchEvent(new MouseEvent('mouseup', {
75+
view: window,
76+
bubbles: true,
77+
cancelable: true
78+
}));
79+
expect(model.activateEditor).not.toHaveBeenCalled();
80+
});
81+
it('Should not call activateEditor() if the element has no focus', function () {
82+
model.activateEditor = jasmine.createSpy();
83+
$(model.element).on('mousedown', function (event) {
84+
return model.handleMouseDown(model, event);
85+
});
86+
model.element.dispatchEvent(new MouseEvent('mousedown', {
87+
view: window,
88+
bubbles: true,
89+
cancelable: true
90+
}));
91+
document.dispatchEvent(new MouseEvent('mouseup', {
92+
view: window,
93+
bubbles: true,
94+
cancelable: true
95+
}));
96+
expect(model.activateEditor).not.toHaveBeenCalled();
97+
});
98+
});
99+
});
100+
});

0 commit comments

Comments
 (0)