@@ -15,6 +15,8 @@ QUnit.module( "widget factory classes", {
15
15
} ,
16
16
_create : function ( ) {
17
17
this . span = $ ( "<span>" )
18
+ . add ( "<span>" )
19
+ . add ( "<span>" )
18
20
. appendTo ( this . element ) ;
19
21
20
22
this . element . wrap ( "<div>" ) ;
@@ -68,9 +70,9 @@ function elementHasClasses( widget, method, assert ) {
68
70
"_" + method + "Class works with ( null, extra" + toggle + " )" ) ;
69
71
assert . hasClasses ( widget . parent ( ) , "ui-classes-widget ui-theme-widget" ,
70
72
"_" + method + "Class works with ( element, null, extra" + toggle + " )" ) ;
71
- assert . hasClasses ( widget . find ( "span" ) , "ui-classes-span ui-core-span" ,
73
+ assert . hasClasses ( widget . find ( "span" ) [ 0 ] , "ui-classes-span ui-core-span" ,
72
74
"_" + method + "Class works with ( element, keys, extra" + toggle + " )" ) ;
73
- assert . hasClasses ( widget . find ( "span" ) , "ui-core-span-null" ,
75
+ assert . hasClasses ( widget . find ( "span" ) [ 0 ] , "ui-core-span-null" ,
74
76
"_" + method + "Class works with ( element, keys, null" + toggle + " )" ) ;
75
77
}
76
78
function elementLacksClasses ( widget , method , assert ) {
@@ -84,9 +86,9 @@ function elementLacksClasses( widget, method, assert ) {
84
86
"_" + method + "Class works with ( null, extra" + toggle + " )" ) ;
85
87
assert . lacksClasses ( widget . parent ( ) , "ui-classes-widget ui-theme-widget" ,
86
88
"_" + method + "Class works with ( element, null, extra" + toggle + " )" ) ;
87
- assert . lacksClasses ( widget . find ( "span" ) , "ui-classes-span ui-core-span" ,
89
+ assert . lacksClasses ( widget . find ( "span" ) [ 0 ] , "ui-classes-span ui-core-span" ,
88
90
"_" + method + "Class works with ( element, keys, extra" + toggle + " )" ) ;
89
- assert . lacksClasses ( widget . find ( "span" ) , "ui-core-span-null" ,
91
+ assert . lacksClasses ( widget . find ( "span" ) [ 0 ] , "ui-core-span-null" ,
90
92
"_" + method + "Class works with ( element, keys, null" + toggle + " )" ) ;
91
93
}
92
94
@@ -113,7 +115,7 @@ QUnit.test( ".option() - classes setter", function( assert ) {
113
115
"Setting to empty value leaves structure class" ) ;
114
116
assert . lacksClasses ( testWidget . element , "ui-theme-element-2" ,
115
117
"Setting empty value removes previous value classes" ) ;
116
- assert . hasClasses ( testWidget . span , "ui-classes-span custom-theme-span" ,
118
+ assert . hasClasses ( testWidget . span [ 0 ] , "ui-classes-span custom-theme-span" ,
117
119
"Adding a class to an empty value works as expected" ) ;
118
120
assert . hasClasses ( testWidget . wrapper , "ui-classes-widget custom-theme-widget" ,
119
121
"Appending a class to the current value works as expected" ) ;
@@ -144,4 +146,34 @@ QUnit.test( "._add/_remove/_toggleClass()", function( assert ) {
144
146
elementLacksClasses ( widget , "remove" , assert ) ;
145
147
} ) ;
146
148
149
+ QUnit . test ( "Classes elements are untracked as they are removed from the DOM" , function ( assert ) {
150
+ assert . expect ( 9 ) ;
151
+
152
+ var widget = $ ( "#widget" ) . classesWidget ( ) ;
153
+ var instance = widget . classesWidget ( "instance" ) ;
154
+
155
+ assert . equal ( instance . classesElementLookup [ "ui-classes-span" ] . length , 3 ,
156
+ "Widget is tracking 3 ui-classes-span elements" ) ;
157
+ assert . equal ( instance . classesElementLookup [ "ui-core-span-null" ] . length , 3 ,
158
+ "Widget is tracking 3 ui-core-span-null elements" ) ;
159
+ assert . equal ( instance . classesElementLookup [ "ui-core-span" ] . length , 3 ,
160
+ "Widget is tracking 3 ui-core-span elements" ) ;
161
+
162
+ widget . find ( "span" ) . eq ( 0 ) . remove ( ) ;
163
+ assert . equal ( instance . classesElementLookup [ "ui-classes-span" ] . length , 2 ,
164
+ "After removing 1 span from dom 2 ui-classes-span elements are tracked" ) ;
165
+ assert . equal ( instance . classesElementLookup [ "ui-core-span-null" ] . length , 2 ,
166
+ "After removing 1 span from dom 2 ui-core-span-null elements are tracked" ) ;
167
+ assert . equal ( instance . classesElementLookup [ "ui-core-span" ] . length , 2 ,
168
+ "After removing 1 span from dom 2 ui-core-span elements are tracked" ) ;
169
+
170
+ widget . find ( "span" ) . remove ( ) ;
171
+ assert . equal ( instance . classesElementLookup [ "ui-classes-span" ] . length , 0 ,
172
+ "No ui-classes-span elements are tracked after removing all spans" ) ;
173
+ assert . equal ( instance . classesElementLookup [ "ui-core-span-null" ] . length , 0 ,
174
+ "No ui-core-span-null elements are tracked after removing all spans" ) ;
175
+ assert . equal ( instance . classesElementLookup [ "ui-core-span" ] . length , 0 ,
176
+ "No ui-core-span elements are tracked after removing all spans" ) ;
177
+ } ) ;
178
+
147
179
} ) ;
0 commit comments