@@ -24,7 +24,7 @@ test( "widget creation", function() {
2424} ) ;
2525
2626test ( "element normalization" , function ( ) {
27- expect ( 12 ) ;
27+ expect ( 11 ) ;
2828 var elem ;
2929 $ . widget ( "ui.testWidget" , { } ) ;
3030
@@ -67,7 +67,6 @@ test( "element normalization", function() {
6767 $ . ui . testWidget . prototype . _create = function ( ) {
6868 // using strictEqual throws an error (Maximum call stack size exceeded)
6969 ok ( this . element [ 0 ] === this , "instance as element" ) ;
70- ok ( this . element . data ( "testWidget" ) === this , "instance stored in .data()" ) ;
7170 } ;
7271 $ . ui . testWidget ( ) ;
7372} ) ;
@@ -219,7 +218,7 @@ test( "merge multiple option arguments", function() {
219218 } ) ;
220219} ) ;
221220
222- test ( "_getCreateOptions()" , function ( ) {
221+ test ( ". _getCreateOptions()" , function ( ) {
223222 expect ( 1 ) ;
224223 $ . widget ( "ui.testWidget" , {
225224 options : {
@@ -450,6 +449,165 @@ test( ".widget() - overriden", function() {
450449 same ( wrapper [ 0 ] , $ ( "<div>" ) . testWidget ( ) . testWidget ( "widget" ) [ 0 ] ) ;
451450} ) ;
452451
452+ test ( "._bind() to element (default)" , function ( ) {
453+ expect ( 12 ) ;
454+ var self ;
455+ $ . widget ( "ui.testWidget" , {
456+ _create : function ( ) {
457+ self = this ;
458+ this . _bind ( {
459+ keyup : this . keyup ,
460+ keydown : "keydown"
461+ } ) ;
462+ } ,
463+ keyup : function ( event ) {
464+ equals ( self , this ) ;
465+ equals ( self . element [ 0 ] , event . currentTarget ) ;
466+ equals ( "keyup" , event . type ) ;
467+ } ,
468+ keydown : function ( event ) {
469+ equals ( self , this ) ;
470+ equals ( self . element [ 0 ] , event . currentTarget ) ;
471+ equals ( "keydown" , event . type ) ;
472+ }
473+ } ) ;
474+ var widget = $ ( "<div></div>" )
475+ . testWidget ( )
476+ . trigger ( "keyup" )
477+ . trigger ( "keydown" ) ;
478+ widget
479+ . testWidget ( "disable" )
480+ . trigger ( "keyup" )
481+ . trigger ( "keydown" ) ;
482+ widget
483+ . testWidget ( "enable" )
484+ . trigger ( "keyup" )
485+ . trigger ( "keydown" ) ;
486+ widget
487+ . testWidget ( "destroy" )
488+ . trigger ( "keyup" )
489+ . trigger ( "keydown" ) ;
490+ } ) ;
491+
492+ test ( "._bind() to descendent" , function ( ) {
493+ expect ( 12 ) ;
494+ var self ;
495+ $ . widget ( "ui.testWidget" , {
496+ _create : function ( ) {
497+ self = this ;
498+ this . _bind ( this . element . find ( "strong" ) , {
499+ keyup : this . keyup ,
500+ keydown : "keydown"
501+ } ) ;
502+ } ,
503+ keyup : function ( event ) {
504+ equals ( self , this ) ;
505+ equals ( self . element . find ( "strong" ) [ 0 ] , event . currentTarget ) ;
506+ equals ( "keyup" , event . type ) ;
507+ } ,
508+ keydown : function ( event ) {
509+ equals ( self , this ) ;
510+ equals ( self . element . find ( "strong" ) [ 0 ] , event . currentTarget ) ;
511+ equals ( "keydown" , event . type ) ;
512+ }
513+ } ) ;
514+ // trigger events on both widget and descendent to ensure that only descendent receives them
515+ var widget = $ ( "<div><p><strong>hello</strong> world</p></div>" )
516+ . testWidget ( )
517+ . trigger ( "keyup" )
518+ . trigger ( "keydown" ) ;
519+ var descendent = widget . find ( "strong" )
520+ . trigger ( "keyup" )
521+ . trigger ( "keydown" ) ;
522+ widget
523+ . testWidget ( "disable" )
524+ . trigger ( "keyup" )
525+ . trigger ( "keydown" ) ;
526+ descendent
527+ . trigger ( "keyup" )
528+ . trigger ( "keydown" ) ;
529+ widget
530+ . testWidget ( "enable" )
531+ . trigger ( "keyup" )
532+ . trigger ( "keydown" ) ;
533+ descendent
534+ . trigger ( "keyup" )
535+ . trigger ( "keydown" ) ;
536+ descendent
537+ . addClass ( "ui-state-disabled" )
538+ . trigger ( "keyup" )
539+ . trigger ( "keydown" ) ;
540+ widget
541+ . testWidget ( "destroy" )
542+ . trigger ( "keyup" )
543+ . trigger ( "keydown" ) ;
544+ descendent
545+ . trigger ( "keyup" )
546+ . trigger ( "keydown" ) ;
547+ } ) ;
548+
549+ test ( "._hoverable()" , function ( ) {
550+ $ . widget ( "ui.testWidget" , {
551+ _create : function ( ) {
552+ this . _hoverable ( this . element . children ( ) ) ;
553+ }
554+ } ) ;
555+
556+ var div = $ ( "#widget" ) . testWidget ( ) . children ( ) ;
557+ ok ( ! div . hasClass ( "ui-state-hover" ) , "not hovered on init" ) ;
558+ div . trigger ( "mouseenter" ) ;
559+ ok ( div . hasClass ( "ui-state-hover" ) , "hovered after mouseenter" ) ;
560+ div . trigger ( "mouseleave" ) ;
561+ ok ( ! div . hasClass ( "ui-state-hover" ) , "not hovered after mouseleave" ) ;
562+
563+ div . trigger ( "mouseenter" ) ;
564+ ok ( div . hasClass ( "ui-state-hover" ) , "hovered after mouseenter" ) ;
565+ $ ( "#widget" ) . testWidget ( "disable" ) ;
566+ ok ( ! div . hasClass ( "ui-state-hover" ) , "not hovered while disabled" ) ;
567+ div . trigger ( "mouseenter" ) ;
568+ ok ( ! div . hasClass ( "ui-state-hover" ) , "can't hover while disabled" ) ;
569+ $ ( "#widget" ) . testWidget ( "enable" ) ;
570+ ok ( ! div . hasClass ( "ui-state-hover" ) , "enabling doesn't reset hover" ) ;
571+
572+ div . trigger ( "mouseenter" ) ;
573+ ok ( div . hasClass ( "ui-state-hover" ) , "hovered after mouseenter" ) ;
574+ $ ( "#widget" ) . testWidget ( "destroy" ) ;
575+ ok ( ! div . hasClass ( "ui-state-hover" ) , "not hovered after destroy" ) ;
576+ div . trigger ( "mouseenter" ) ;
577+ ok ( ! div . hasClass ( "ui-state-hover" ) , "event handler removed on destroy" ) ;
578+ } ) ;
579+
580+ test ( "._focusable()" , function ( ) {
581+ $ . widget ( "ui.testWidget" , {
582+ _create : function ( ) {
583+ this . _focusable ( this . element . children ( ) ) ;
584+ }
585+ } ) ;
586+
587+ var div = $ ( "#widget" ) . testWidget ( ) . children ( ) ;
588+ ok ( ! div . hasClass ( "ui-state-focus" ) , "not focused on init" ) ;
589+ div . trigger ( "focusin" ) ;
590+ ok ( div . hasClass ( "ui-state-focus" ) , "focused after explicit focus" ) ;
591+ div . trigger ( "focusout" ) ;
592+ ok ( ! div . hasClass ( "ui-state-focus" ) , "not focused after blur" ) ;
593+
594+ div . trigger ( "focusin" ) ;
595+ ok ( div . hasClass ( "ui-state-focus" ) , "focused after explicit focus" ) ;
596+ $ ( "#widget" ) . testWidget ( "disable" ) ;
597+ ok ( ! div . hasClass ( "ui-state-focus" ) , "not focused while disabled" ) ;
598+ div . trigger ( "focusin" ) ;
599+ ok ( ! div . hasClass ( "ui-state-focus" ) , "can't focus while disabled" ) ;
600+ $ ( "#widget" ) . testWidget ( "enable" ) ;
601+ ok ( ! div . hasClass ( "ui-state-focus" ) , "enabling doesn't reset focus" ) ;
602+
603+ div . trigger ( "focusin" ) ;
604+ ok ( div . hasClass ( "ui-state-focus" ) , "focused after explicit focus" ) ;
605+ $ ( "#widget" ) . testWidget ( "destroy" ) ;
606+ ok ( ! div . hasClass ( "ui-state-focus" ) , "not focused after destroy" ) ;
607+ div . trigger ( "focusin" ) ;
608+ ok ( ! div . hasClass ( "ui-state-focus" ) , "event handler removed on destroy" ) ;
609+ } ) ;
610+
453611test ( "._trigger() - no event, no ui" , function ( ) {
454612 expect ( 7 ) ;
455613 var handlers = [ ] ;
0 commit comments