Skip to content

Commit fad621f

Browse files
committed
Refactoring event listeners to accomodate ember 3.8 in github ci
1 parent fc31fec commit fad621f

File tree

1 file changed

+56
-7
lines changed

1 file changed

+56
-7
lines changed

addon/tests/integration/dom/drag-move-test.js

+56-7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { module, test } from 'qunit';
22
import { hbs } from 'ember-cli-htmlbars';
33
import {
44
dragMove,
5+
find,
56
render,
67
setupContext,
78
setupRenderingContext,
@@ -48,15 +49,28 @@ module('DOM Helper: moveDrag', function (hooks) {
4849
});
4950

5051
await render(hbs`
51-
<div draggable='true' class='source' {{on 'dragstart' this.handleDragStart}}>Test draggable text</div>
52-
<div class='target'
53-
{{on "dragover" this.handleDragOver}}
54-
{{on "dragenter" this.handleDragEnter}}
55-
{{on "drop" this.handleDrop}}
56-
>Drag text here</div>
52+
<div draggable='true' class='source'>Test draggable text</div>
53+
<div class='target'>Drag text here</div>
5754
`);
5855

59-
debugger;
56+
/* The below addEventListeners are used because Ember 3.8 did not have the `on` helper, and
57+
* this test errors in ember-test-helpers github ci.
58+
*
59+
* This is how the dom rendering above would loook like with modern ember templates:
60+
*
61+
* <div draggable='true' class='source' {{on 'dragstart' this.handleDragStart}}>Test draggable text</div>
62+
* <div class='target'
63+
* {{on "dragover" this.handleDragOver}}
64+
* {{on "dragenter" this.handleDragEnter}}
65+
* {{on "drop" this.handleDrop}}
66+
* >Drag text here</div>
67+
*/
68+
const sourceEl = find('.source');
69+
sourceEl.addEventListener('dragstart', this.handleDragStart);
70+
const targetEl = find('.target');
71+
targetEl.addEventListener('drop', this.handleDrop);
72+
targetEl.addEventListener('dragover', this.handleDragOver);
73+
targetEl.addEventListener('dragenter', this.handleDragEnter);
6074

6175
await dragMove('.source', '.target');
6276

@@ -65,4 +79,39 @@ module('DOM Helper: moveDrag', function (hooks) {
6579
assert.true(this.get('dragoverTriggered'));
6680
assert.true(this.get('dropTriggered'));
6781
});
82+
83+
test('dataTransfer mock transfers data like html api', async function (assert) {
84+
const testString = 'Test string!';
85+
86+
this.set('handleDragStart', (event) => {
87+
event.dataTransfer.setData('test', testString);
88+
});
89+
this.set('handleDragOver', (event) => {
90+
event.preventDefault();
91+
});
92+
this.set('handleDragEnter', (event) => {
93+
event.preventDefault();
94+
});
95+
this.set('handleDrop', (event) => {
96+
const payload = event.dataTransfer.getData('test');
97+
98+
this.set('deliveredPayload', payload);
99+
});
100+
101+
await render(hbs`
102+
<div draggable='true' class='source'>Test draggable text</div>
103+
<div class='target'>Drag text here</div>
104+
`);
105+
106+
const sourceEl = find('.source');
107+
sourceEl.addEventListener('dragstart', this.handleDragStart);
108+
const targetEl = find('.target');
109+
targetEl.addEventListener('drop', this.handleDrop);
110+
targetEl.addEventListener('dragover', this.handleDragOver);
111+
targetEl.addEventListener('dragenter', this.handleDragEnter);
112+
113+
await dragMove('.source', '.target');
114+
115+
assert.equal(testString, this.get('deliveredPayload'));
116+
});
68117
});

0 commit comments

Comments
 (0)