@@ -2,6 +2,7 @@ import { module, test } from 'qunit';
2
2
import { hbs } from 'ember-cli-htmlbars' ;
3
3
import {
4
4
dragMove ,
5
+ find ,
5
6
render ,
6
7
setupContext ,
7
8
setupRenderingContext ,
@@ -48,15 +49,28 @@ module('DOM Helper: moveDrag', function (hooks) {
48
49
} ) ;
49
50
50
51
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>
57
54
` ) ;
58
55
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 ) ;
60
74
61
75
await dragMove ( '.source' , '.target' ) ;
62
76
@@ -65,4 +79,39 @@ module('DOM Helper: moveDrag', function (hooks) {
65
79
assert . true ( this . get ( 'dragoverTriggered' ) ) ;
66
80
assert . true ( this . get ( 'dropTriggered' ) ) ;
67
81
} ) ;
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
+ } ) ;
68
117
} ) ;
0 commit comments