@@ -1177,6 +1177,63 @@ describe('jqLite', function() {
1177
1177
}
1178
1178
} ) ;
1179
1179
1180
+ describe ( 'one' , function ( ) {
1181
+
1182
+ it ( 'should only fire the callback once' , function ( ) {
1183
+ var element = jqLite ( a ) ;
1184
+ var spy = jasmine . createSpy ( 'click' ) ;
1185
+
1186
+ element . one ( 'click' , spy ) ;
1187
+
1188
+ browserTrigger ( element , 'click' ) ;
1189
+ expect ( spy ) . toHaveBeenCalledOnce ( ) ;
1190
+
1191
+ browserTrigger ( element , 'click' ) ;
1192
+ expect ( spy ) . toHaveBeenCalledOnce ( ) ;
1193
+ } ) ;
1194
+
1195
+ it ( 'should deregister when off is called' , function ( ) {
1196
+ var element = jqLite ( a ) ;
1197
+ var spy = jasmine . createSpy ( 'click' ) ;
1198
+
1199
+ element . one ( 'click' , spy ) ;
1200
+ element . off ( 'click' , spy ) ;
1201
+
1202
+ browserTrigger ( element , 'click' ) ;
1203
+ expect ( spy ) . not . toHaveBeenCalled ( ) ;
1204
+ } ) ;
1205
+
1206
+ it ( 'should return the same event object just as on() does' , function ( ) {
1207
+ var element = jqLite ( a ) ;
1208
+ var eventA , eventB ;
1209
+ element . on ( 'click' , function ( event ) {
1210
+ eventA = event ;
1211
+ } ) ;
1212
+ element . one ( 'click' , function ( event ) {
1213
+ eventB = event ;
1214
+ } ) ;
1215
+
1216
+ browserTrigger ( element , 'click' ) ;
1217
+ expect ( eventA ) . toEqual ( eventB ) ;
1218
+ } ) ;
1219
+
1220
+ it ( 'should not remove other event handlers of the same type after execution' , function ( ) {
1221
+ var element = jqLite ( a ) ;
1222
+ var calls = [ ] ;
1223
+ element . one ( 'click' , function ( event ) {
1224
+ calls . push ( 'one' ) ;
1225
+ } ) ;
1226
+ element . on ( 'click' , function ( event ) {
1227
+ calls . push ( 'on' ) ;
1228
+ } ) ;
1229
+
1230
+ browserTrigger ( element , 'click' ) ;
1231
+ browserTrigger ( element , 'click' ) ;
1232
+
1233
+ expect ( calls ) . toEqual ( [ 'one' , 'on' , 'on' ] ) ;
1234
+ } ) ;
1235
+ } ) ;
1236
+
1180
1237
1181
1238
describe ( 'replaceWith' , function ( ) {
1182
1239
it ( 'should replaceWith' , function ( ) {
0 commit comments