Skip to content

Commit 5e58859

Browse files
committed
Tabs: Added tests for load method.
1 parent 965cb73 commit 5e58859

File tree

2 files changed

+84
-8
lines changed

2 files changed

+84
-8
lines changed

tests/unit/tabs/tabs_methods.js

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,85 @@ test( "refresh", function() {
145145
tabs_disabled( element, false );
146146
});
147147

148-
test('load', function() {
149-
ok(false, "missing test - untested code is broken code.");
148+
asyncTest( "load", function() {
149+
expect( 30 );
150+
151+
var element = $( "#tabs2" ).tabs();
152+
153+
// load content of inactive tab
154+
// useful for preloading content with custom caching
155+
element.one( "tabsbeforeload", function( event, ui ) {
156+
var tab = element.find( ".ui-tabs-nav a" ).eq( 3 ),
157+
panelId = tab.attr( "aria-controls" ),
158+
panel = $( "#" + panelId );
159+
160+
ok( !( "originalEvent" in event ), "originalEvent" );
161+
equals( ui.tab.size(), 1, "tab size" );
162+
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
163+
equals( ui.panel.size(), 1, "panel size" );
164+
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
165+
tabs_state( element, 1, 0, 0, 0, 0 );
166+
});
167+
element.one( "tabsload", function( event, ui ) {
168+
var tab = element.find( ".ui-tabs-nav a" ).eq( 3 ),
169+
panelId = tab.attr( "aria-controls" ),
170+
panel = $( "#" + panelId );
171+
172+
ok( !( "originalEvent" in event ), "originalEvent" );
173+
equals( ui.tab.size(), 1, "tab size" );
174+
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
175+
equals( ui.panel.size(), 1, "panel size" );
176+
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
177+
equals( ui.panel.find( "p" ).length, 1, "panel html" );
178+
tabs_state( element, 1, 0, 0, 0, 0 );
179+
setTimeout( tabsload1, 1 );
180+
});
181+
element.tabs( "load", 3 );
182+
tabs_state( element, 1, 0, 0, 0, 0 );
183+
184+
function tabsload1() {
185+
// no need to test details of event (tested in events tests)
186+
element.one( "tabsbeforeload", function() {
187+
ok( true, "tabsbeforeload invoked" );
188+
});
189+
element.one( "tabsload", function() {
190+
ok( true, "tabsload invoked" );
191+
setTimeout( tabsload2, 1 );
192+
});
193+
element.tabs( "option", "active", 3 );
194+
tabs_state( element, 0, 0, 0, 1, 0 );
195+
}
196+
197+
function tabsload2() {
198+
// reload content of active tab
199+
element.one( "tabsbeforeload", function( event, ui ) {
200+
var tab = element.find( ".ui-tabs-nav a" ).eq( 3 ),
201+
panelId = tab.attr( "aria-controls" ),
202+
panel = $( "#" + panelId );
203+
204+
ok( !( "originalEvent" in event ), "originalEvent" );
205+
equals( ui.tab.size(), 1, "tab size" );
206+
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
207+
equals( ui.panel.size(), 1, "panel size" );
208+
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
209+
tabs_state( element, 0, 0, 0, 1, 0 );
210+
});
211+
element.one( "tabsload", function( event, ui ) {
212+
var tab = element.find( ".ui-tabs-nav a" ).eq( 3 ),
213+
panelId = tab.attr( "aria-controls" ),
214+
panel = $( "#" + panelId );
215+
216+
ok( !( "originalEvent" in event ), "originalEvent" );
217+
equals( ui.tab.size(), 1, "tab size" );
218+
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
219+
equals( ui.panel.size(), 1, "panel size" );
220+
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
221+
tabs_state( element, 0, 0, 0, 1, 0 );
222+
start();
223+
});
224+
element.tabs( "load", 3 );
225+
tabs_state( element, 0, 0, 0, 1, 0 );
226+
}
150227
});
151228

152229
}( jQuery ) );

ui/jquery.ui.tabs.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -529,14 +529,14 @@ $.widget( "ui.tabs", {
529529
load: function( index, event ) {
530530
index = this._getIndex( index );
531531
var self = this,
532-
o = this.options,
533-
a = this.anchors.eq( index )[ 0 ],
534-
panel = self._getPanelForTab( a ),
532+
options = this.options,
533+
anchor = this.anchors.eq( index ),
534+
panel = self._getPanelForTab( anchor ),
535535
// TODO until #3808 is fixed strip fragment identifier from url
536536
// (IE fails to load from such url)
537-
url = $( a ).attr( "href" ).replace( /#.*$/, "" ),
537+
url = anchor.attr( "href" ).replace( /#.*$/, "" ),
538538
eventData = {
539-
tab: $( a ),
539+
tab: anchor,
540540
panel: panel
541541
};
542542

@@ -558,7 +558,6 @@ $.widget( "ui.tabs", {
558558
});
559559

560560
if ( this.xhr ) {
561-
// load remote from here on
562561
this.lis.eq( index ).addClass( "ui-tabs-loading" );
563562

564563
this.xhr

0 commit comments

Comments
 (0)