@@ -413,3 +413,66 @@ describe "Observable functions", ->
413413 done ()
414414
415415 model .lastName " Bro"
416+
417+ describe " Observable object" , ->
418+ it " should proxy properties" , ->
419+ obj = Observable
420+ a : 1
421+
422+ assert .equal obj .a , 1
423+ assert .equal obj ().a , obj .a
424+
425+ obj .a = 2
426+
427+ assert .equal obj .a , 2
428+ assert .equal obj ().a , obj .a
429+
430+ it " should work with observable properties" , ->
431+ obj = Observable
432+ a : Observable 1
433+
434+ assert .equal obj .a , 1
435+ assert .equal obj ().a (), obj .a
436+
437+ obj ().a 2
438+
439+ assert .equal obj .a , 2
440+ assert .equal obj ().a (), obj .a
441+
442+ obj .a = 3
443+
444+ assert .equal obj .a , 3
445+ assert .equal obj ().a (), obj .a
446+
447+ it " should compute object#extend as a dependency" , ->
448+ obj = Observable
449+ a : 1
450+
451+ obj .extend b : 2
452+
453+ assert .equal obj .b , 2
454+ assert .equal obj ().b , obj .b
455+
456+ # alias
457+ obj .assign c : 3
458+
459+ assert .equal obj .c , 3
460+ assert .equal obj ().c , obj .c
461+
462+ it " should compute object#remove as a dependency" , ->
463+ obj = Observable
464+ a : 1
465+ b : 2
466+
467+ obj .remove " b"
468+
469+ assert .equal obj .b , undefined
470+
471+ it " should proxy object methods" , ->
472+ obj = Observable
473+ a : 1
474+ b : 2
475+
476+ assert .deepEqual obj .keys , [" a" , " b" ]
477+ assert .deepEqual obj .values , [1 , 2 ]
478+ assert .deepEqual obj .entries , [[" a" , 1 ], [" b" , 2 ]]
0 commit comments