@@ -90,62 +90,120 @@ bender.test(
90
90
/**
91
91
* Test editor core data retrieval and manipulation functionality.
92
92
*/
93
- test_getData : function ( ) {
94
- var events = [ ] ;
93
+ 'test getData/setData' : function ( ) {
94
+ var events = [ ] ,
95
+ editor = new CKEDITOR . editor ( { } , CKEDITOR . document . getById ( 'editor4' ) , CKEDITOR . ELEMENT_MODE_REPLACE ) ;
95
96
function checkEventData ( value ) {
96
97
return function ( evt ) {
97
98
events . push ( evt . name ) ;
98
-
99
99
// Check data value.
100
100
if ( value )
101
101
assert . areSame ( value , evt . data . dataValue , 'check data on event: ' + evt . name ) ;
102
-
103
102
// Alter the data value.
104
103
if ( evt . name == 'setData' )
105
104
evt . data . dataValue = 'bar' ;
106
-
107
105
} ;
108
106
}
107
+ // This function allows to call either older API or new object based setData().
108
+ // It takes setData() params in new format (as editor#setData()).
109
+ function callSetData ( data , params , legacyInterface ) {
110
+ if ( legacyInterface )
111
+ editor . setData ( data , params . callback , params . internal ) ;
112
+ else
113
+ editor . setData ( data , params ) ;
114
+ }
109
115
110
- var editor =
111
- new CKEDITOR . editor ( { } ,
112
- CKEDITOR . document . getById ( 'editor4' ) ,
113
- CKEDITOR . ELEMENT_MODE_REPLACE ) ;
114
-
115
- // Events are fired on setData call.
116
- var checker = checkEventData ( ) ;
116
+ var listeners = [ ] ,
117
+ allEvents = [ 'setData' , 'afterSetData' , 'beforeGetData' , 'getData' , 'saveSnapshot' ] ,
118
+ listener = checkEventData ( ) ;
117
119
118
- var listeners = [ ] ;
119
- var allEvents = [ 'setData' , 'afterSetData' , 'beforeGetData' , 'getData' ] ;
120
120
for ( var i = 0 ; i < allEvents . length ; i ++ )
121
- listeners . push ( editor . on ( allEvents [ i ] , checker ) ) ;
121
+ listeners . push ( editor . on ( allEvents [ i ] , listener ) ) ;
122
122
123
- // Set/get data internally.
124
- editor . setData ( 'foo' , null , true ) ;
125
- assert . areSame ( 'foo' , editor . getData ( true ) , 'setData internally' ) ;
123
+ for ( i = 0 ; i <= 1 ; i ++ ) {
124
+ var useOldAPI = Boolean ( i ) ,
125
+ // Helper var with human-readable info what interface version is called.
126
+ interfaceName = useOldAPI ? 'old API params inline' :'new API params as object' ;
126
127
127
- // No events should be fired.
128
- arrayAssert . itemsAreEqual ( [ ] , events ) ;
128
+ events = [ ] ;
129
129
130
- for ( i = 0 ; i < listeners . length ; i ++ )
131
- listeners [ i ] . removeListener ( ) ;
130
+ // Test setData/getData internal.
131
+ callSetData ( 'foo' , { internal : true } , useOldAPI ) ;
132
+ assert . areSame ( 'foo' , editor . getData ( true ) , 'setData internally - ' + interfaceName ) ;
133
+ // No events should be fired.
134
+ assert . areSame ( '' , events . join ( ',' ) , 'Events fired - ' + interfaceName ) ;
132
135
133
- // Events are fired on setData call.
134
- editor . on ( 'setData' , checkEventData ( 'foo' ) ) ;
135
- editor . on ( 'afterSetData' , checkEventData ( 'bar' ) ) ;
136
- editor . setData ( 'foo' ) ;
136
+ events = [ ] ;
137
+ // Test non-internal setData() - snapshot is expected.
138
+ callSetData ( 'foo' , { } , useOldAPI ) ;
137
139
138
- arrayAssert . itemsAreEqual ( [ ' setData' , ' afterSetData' ] , events ) ;
139
- assert . areSame ( 'bar' , editor . getData ( ) , 'setData listener change data value' ) ;
140
+ assert . areSame ( 'saveSnapshot, setData, afterSetData', events . join ( ',' ) ,
141
+ 'Invalid events for setData() - ' + interfaceName ) ;
140
142
143
+ // Test non-internal getData().
144
+ events = [ ] ;
145
+
146
+ assert . areSame ( 'bar' , editor . getData ( ) , 'setData listener change data value - ' + interfaceName ) ;
147
+ assert . areSame ( 'beforeGetData,getData' , events . join ( ',' ) ) ;
148
+ }
149
+
150
+ // New API provides params.noSnapshot, which should prevent saveSnapshot event.
141
151
events = [ ] ;
142
- // Events are fired on getData call.
143
- editor . on ( 'beforeGetData' , checkEventData ( ) ) ;
144
- editor . on ( 'getData' , checkEventData ( 'bar' ) ) ;
145
- editor . getData ( ) ;
152
+ callSetData ( 'foo' , { noSnapshot : true } ) ;
153
+
154
+ assert . areSame ( 'setData,afterSetData' , events . join ( ',' ) , 'Invalid events with params.noSnapshot = true' ) ;
155
+ } ,
156
+
157
+ 'test setData callback' : function ( ) {
158
+ var callbackCalledTimes = 0 ,
159
+ callback = function ( ) {
160
+ callbackCalledTimes += 1 ;
161
+ } ,
162
+ waitTimeout = 80 ;
163
+
164
+ this . editor . setData ( '<p>setData</p>' , { callback : callback } ) ;
165
+
166
+ wait ( function ( ) {
167
+ assert . areEqual ( 1 , callbackCalledTimes , 'Invalid callback calls count' ) ;
168
+ // And test for older API.
169
+ this . editor . setData ( '<p>setData</p>' , callback ) ;
170
+
171
+ wait ( function ( ) {
172
+ assert . areEqual ( 2 , callbackCalledTimes , 'Invalid callback calls count 2nd case' ) ;
173
+ } , waitTimeout ) ;
174
+ } , waitTimeout ) ;
175
+ } ,
176
+
177
+ 'test setData()' : function ( ) {
178
+ var firedEvents = [ ] ,
179
+ listeners = [ ] ,
180
+ editor = this . editor ,
181
+ subscribedEvents = [ 'setData' , 'afterSetData' , 'beforeGetData' , 'getData' ] ,
182
+ callbackCalledTimes = 0 ,
183
+ callback = function ( ) {
184
+ callbackCalledTimes += 1 ;
185
+ } ,
186
+ // This listener will store types of events fired.
187
+ listener = function ( evt ) {
188
+ firedEvents . push ( evt . name ) ;
189
+ } ;
190
+
191
+ // Registering listeners.
192
+ for ( var i = 0 ; i < subscribedEvents . length ; i ++ )
193
+ listeners . push ( editor . on ( subscribedEvents [ i ] , listener ) ) ;
194
+
195
+ // Legacy interface.
196
+ editor . setData ( '<p>setData</p>' , null , true ) ;
197
+ arrayAssert . itemsAreEqual ( [ ] , firedEvents ) ;
198
+
199
+ assert . areEqual ( '<p>setData</p>' , editor . getData ( true ) ) ;
200
+ arrayAssert . itemsAreEqual ( [ ] , firedEvents ) ;
146
201
147
- arrayAssert . itemsAreEqual ( [ 'beforeGetData' , 'getData' ] , events ) ;
202
+ assert . isTrue ( true ) ;
148
203
204
+ // Cleanup.
205
+ for ( var i = 0 ; i < listeners . length ; i ++ )
206
+ listeners [ i ] . removeListener ( ) ;
149
207
} ,
150
208
151
209
updateElement : function ( element , mode ) {
0 commit comments