@@ -222,22 +222,23 @@ describe('jqLite', function() {
222
222
it ( 'should set and get and remove data' , function ( ) {
223
223
var selected = jqLite ( [ a , b , c ] ) ;
224
224
225
- expect ( selected . data ( 'prop' , 'value' ) ) . toEqual ( selected ) ;
226
- expect ( selected . data ( 'prop' ) ) . toEqual ( 'value' ) ;
227
- expect ( jqLite ( a ) . data ( 'prop' ) ) . toEqual ( 'value' ) ;
228
- expect ( jqLite ( b ) . data ( 'prop' ) ) . toEqual ( 'value' ) ;
229
- expect ( jqLite ( c ) . data ( 'prop' ) ) . toEqual ( 'value' ) ;
225
+ expect ( selected . data ( 'prop' ) ) . toBeUndefined ( ) ;
226
+ expect ( selected . data ( 'prop' , 'value' ) ) . toBe ( selected ) ;
227
+ expect ( selected . data ( 'prop' ) ) . toBe ( 'value' ) ;
228
+ expect ( jqLite ( a ) . data ( 'prop' ) ) . toBe ( 'value' ) ;
229
+ expect ( jqLite ( b ) . data ( 'prop' ) ) . toBe ( 'value' ) ;
230
+ expect ( jqLite ( c ) . data ( 'prop' ) ) . toBe ( 'value' ) ;
230
231
231
232
jqLite ( a ) . data ( 'prop' , 'new value' ) ;
232
- expect ( jqLite ( a ) . data ( 'prop' ) ) . toEqual ( 'new value' ) ;
233
- expect ( selected . data ( 'prop' ) ) . toEqual ( 'new value' ) ;
234
- expect ( jqLite ( b ) . data ( 'prop' ) ) . toEqual ( 'value' ) ;
235
- expect ( jqLite ( c ) . data ( 'prop' ) ) . toEqual ( 'value' ) ;
233
+ expect ( jqLite ( a ) . data ( 'prop' ) ) . toBe ( 'new value' ) ;
234
+ expect ( selected . data ( 'prop' ) ) . toBe ( 'new value' ) ;
235
+ expect ( jqLite ( b ) . data ( 'prop' ) ) . toBe ( 'value' ) ;
236
+ expect ( jqLite ( c ) . data ( 'prop' ) ) . toBe ( 'value' ) ;
236
237
237
- expect ( selected . removeData ( 'prop' ) ) . toEqual ( selected ) ;
238
- expect ( jqLite ( a ) . data ( 'prop' ) ) . toEqual ( undefined ) ;
239
- expect ( jqLite ( b ) . data ( 'prop' ) ) . toEqual ( undefined ) ;
240
- expect ( jqLite ( c ) . data ( 'prop' ) ) . toEqual ( undefined ) ;
238
+ expect ( selected . removeData ( 'prop' ) ) . toBe ( selected ) ;
239
+ expect ( jqLite ( a ) . data ( 'prop' ) ) . toBeUndefined ( ) ;
240
+ expect ( jqLite ( b ) . data ( 'prop' ) ) . toBeUndefined ( ) ;
241
+ expect ( jqLite ( c ) . data ( 'prop' ) ) . toBeUndefined ( ) ;
241
242
} ) ;
242
243
243
244
it ( 'should call $destroy function if element removed' , function ( ) {
@@ -247,6 +248,49 @@ describe('jqLite', function() {
247
248
element . remove ( ) ;
248
249
expect ( log ) . toEqual ( 'destroy;' ) ;
249
250
} ) ;
251
+
252
+ it ( 'should retrieve all data if called without params' , function ( ) {
253
+ var element = jqLite ( a ) ;
254
+ expect ( element . data ( ) ) . toEqual ( { } ) ;
255
+
256
+ element . data ( 'foo' , 'bar' ) ;
257
+ expect ( element . data ( ) ) . toEqual ( { foo : 'bar' } ) ;
258
+
259
+ element . data ( ) . baz = 'xxx' ;
260
+ expect ( element . data ( ) ) . toEqual ( { foo : 'bar' , baz : 'xxx' } ) ;
261
+ } ) ;
262
+
263
+ it ( 'should create a new data object if called without args' , function ( ) {
264
+ var element = jqLite ( a ) ,
265
+ data = element . data ( ) ;
266
+
267
+ expect ( data ) . toEqual ( { } ) ;
268
+ element . data ( 'foo' , 'bar' ) ;
269
+ expect ( data ) . toEqual ( { foo : 'bar' } ) ;
270
+ } ) ;
271
+
272
+ it ( 'should create a new data object if called with a single object arg' , function ( ) {
273
+ var element = jqLite ( a ) ,
274
+ newData = { foo : 'bar' } ;
275
+
276
+ element . data ( newData ) ;
277
+ expect ( element . data ( ) ) . toEqual ( { foo : 'bar' } ) ;
278
+ expect ( element . data ( ) ) . not . toBe ( newData ) ; // create a copy
279
+ } ) ;
280
+
281
+ it ( 'should merge existing data object with a new one if called with a single object arg' ,
282
+ function ( ) {
283
+ var element = jqLite ( a ) ;
284
+ element . data ( 'existing' , 'val' ) ;
285
+ expect ( element . data ( ) ) . toEqual ( { existing : 'val' } ) ;
286
+
287
+ var oldData = element . data ( ) ,
288
+ newData = { meLike : 'turtles' , 'youLike' : 'carrots' } ;
289
+
290
+ expect ( element . data ( newData ) ) . toBe ( element ) ;
291
+ expect ( element . data ( ) ) . toEqual ( { meLike : 'turtles' , youLike : 'carrots' , existing : 'val' } ) ;
292
+ expect ( element . data ( ) ) . toBe ( oldData ) ; // merge into the old object
293
+ } ) ;
250
294
} ) ;
251
295
252
296
0 commit comments