( function ( mw, $ ) {
var loremIpsum = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.';
- QUnit.module( 'jquery.makeCollapsible', QUnit.newMwEnvironment( {
- setup: function () {
- this.clock = this.sandbox.useFakeTimers();
- }
- } ) );
+ QUnit.module( 'jquery.makeCollapsible', QUnit.newMwEnvironment() );
function prepareCollapsible( html, options ) {
return $( $.parseHTML( html ) )
}
// This test is first because if it fails, then almost all of the latter tests are meaningless.
- QUnit.test( 'testing hooks/triggers', 4, function ( assert ) {
- var test = this,
- $collapsible = prepareCollapsible(
+ QUnit.test( 'testing hooks/triggers', function ( assert ) {
+ var $collapsible = prepareCollapsible(
'<div class="mw-collapsible">' + loremIpsum + '</div>'
),
$content = $collapsible.find( '.mw-collapsible-content' ),
// ...expanding happens here
$toggle.trigger( 'click' );
- test.clock.tick( 500 );
} );
// ...collapsing happens here
$toggle.trigger( 'click' );
- test.clock.tick( 500 );
} );
- QUnit.test( 'basic operation (<div>)', 5, function ( assert ) {
- var test = this,
- $collapsible = prepareCollapsible(
+ QUnit.test( 'basic operation (<div>)', function ( assert ) {
+ var $collapsible = prepareCollapsible(
'<div class="mw-collapsible">' + loremIpsum + '</div>'
),
$content = $collapsible.find( '.mw-collapsible-content' ),
} );
$toggle.trigger( 'click' );
- test.clock.tick( 500 );
} );
$toggle.trigger( 'click' );
- test.clock.tick( 500 );
} );
- QUnit.test( 'basic operation (<table>)', 7, function ( assert ) {
- var test = this,
- $collapsible = prepareCollapsible(
+ QUnit.test( 'basic operation (<table>)', function ( assert ) {
+ var $collapsible = prepareCollapsible(
'<table class="mw-collapsible">' +
'<tr><td>' + loremIpsum + '</td><td>' + loremIpsum + '</td></tr>' +
'<tr><td>' + loremIpsum + '</td><td>' + loremIpsum + '</td></tr>' +
} );
$toggle.trigger( 'click' );
- test.clock.tick( 500 );
} );
$toggle.trigger( 'click' );
- test.clock.tick( 500 );
} );
function tableWithCaptionTest( $collapsible, test, assert ) {
} );
$toggle.trigger( 'click' );
- test.clock.tick( 500 );
} );
$toggle.trigger( 'click' );
- test.clock.tick( 500 );
}
- QUnit.test( 'basic operation (<table> with caption)', 10, function ( assert ) {
+ QUnit.test( 'basic operation (<table> with caption)', function ( assert ) {
tableWithCaptionTest( prepareCollapsible(
'<table class="mw-collapsible">' +
'<caption>' + loremIpsum + '</caption>' +
), this, assert );
} );
- QUnit.test( 'basic operation (<table> with caption and <thead>)', 10, function ( assert ) {
+ QUnit.test( 'basic operation (<table> with caption and <thead>)', function ( assert ) {
tableWithCaptionTest( prepareCollapsible(
'<table class="mw-collapsible">' +
'<caption>' + loremIpsum + '</caption>' +
} );
$toggle.trigger( 'click' );
- test.clock.tick( 500 );
} );
$toggle.trigger( 'click' );
- test.clock.tick( 500 );
}
- QUnit.test( 'basic operation (<ul>)', 7, function ( assert ) {
+ QUnit.test( 'basic operation (<ul>)', function ( assert ) {
listTest( 'ul', this, assert );
} );
- QUnit.test( 'basic operation (<ol>)', 7, function ( assert ) {
+ QUnit.test( 'basic operation (<ol>)', function ( assert ) {
listTest( 'ol', this, assert );
} );
- QUnit.test( 'basic operation when synchronous (options.instantHide)', 2, function ( assert ) {
+ QUnit.test( 'basic operation when synchronous (options.instantHide)', function ( assert ) {
var $collapsible = prepareCollapsible(
'<div class="mw-collapsible">' + loremIpsum + '</div>',
{ instantHide: true }
assert.assertTrue( $content.is( ':hidden' ), 'after collapsing: content is hidden' );
} );
- QUnit.test( 'mw-made-collapsible data added', 1, function ( assert ) {
+ QUnit.test( 'mw-made-collapsible data added', function ( assert ) {
var $collapsible = prepareCollapsible(
'<div>' + loremIpsum + '</div>'
);
assert.equal( $collapsible.data( 'mw-made-collapsible' ), true, 'mw-made-collapsible data present' );
} );
- QUnit.test( 'mw-collapsible added when missing', 1, function ( assert ) {
+ QUnit.test( 'mw-collapsible added when missing', function ( assert ) {
var $collapsible = prepareCollapsible(
'<div>' + loremIpsum + '</div>'
);
assert.assertTrue( $collapsible.hasClass( 'mw-collapsible' ), 'mw-collapsible class present' );
} );
- QUnit.test( 'mw-collapsed added when missing', 1, function ( assert ) {
+ QUnit.test( 'mw-collapsed added when missing', function ( assert ) {
var $collapsible = prepareCollapsible(
'<div>' + loremIpsum + '</div>',
{ collapsed: true }
assert.assertTrue( $collapsible.hasClass( 'mw-collapsed' ), 'mw-collapsed class present' );
} );
- QUnit.test( 'initial collapse (mw-collapsed class)', 2, function ( assert ) {
+ QUnit.test( 'initial collapse (mw-collapsed class)', function ( assert ) {
var $collapsible = prepareCollapsible(
'<div class="mw-collapsible mw-collapsed">' + loremIpsum + '</div>'
),
} );
$collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
- this.clock.tick( 500 );
} );
- QUnit.test( 'initial collapse (options.collapsed)', 2, function ( assert ) {
+ QUnit.test( 'initial collapse (options.collapsed)', function ( assert ) {
var $collapsible = prepareCollapsible(
'<div class="mw-collapsible">' + loremIpsum + '</div>',
{ collapsed: true }
} );
$collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
- this.clock.tick( 500 );
} );
- QUnit.test( 'clicks on links inside toggler pass through (options.linksPassthru)', 2, function ( assert ) {
+ QUnit.test( 'clicks on links inside toggler pass through (options.linksPassthru)', function ( assert ) {
var $collapsible = prepareCollapsible(
'<div class="mw-collapsible">' +
'<div class="mw-collapsible-toggle">' +
assert.assertTrue( $content.is( ':hidden' ), 'click event on non-link inside toggle toggles content' );
} );
- QUnit.test( 'collapse/expand text (data-collapsetext, data-expandtext)', 2, function ( assert ) {
+ QUnit.test( 'collapse/expand text (data-collapsetext, data-expandtext)', function ( assert ) {
var $collapsible = prepareCollapsible(
'<div class="mw-collapsible" data-collapsetext="Collapse me!" data-expandtext="Expand me!">' +
loremIpsum +
} );
$collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
- this.clock.tick( 500 );
} );
- QUnit.test( 'collapse/expand text (options.collapseText, options.expandText)', 2, function ( assert ) {
+ QUnit.test( 'collapse/expand text (options.collapseText, options.expandText)', function ( assert ) {
var $collapsible = prepareCollapsible(
'<div class="mw-collapsible">' + loremIpsum + '</div>',
{ collapseText: 'Collapse me!', expandText: 'Expand me!' }
} );
$collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
- this.clock.tick( 500 );
} );
+ QUnit.test( 'cloned collapsibles can be made collapsible again', function ( assert ) {
+ var $collapsible = prepareCollapsible(
+ '<div class="mw-collapsible">' + loremIpsum + '</div>'
+ ),
+ $clone = $collapsible.clone() // clone without data and events
+ .appendTo( '#qunit-fixture' ).makeCollapsible(),
+ $content = $clone.find( '.mw-collapsible-content' );
+
+ assert.assertTrue( $content.is( ':visible' ), 'content is visible' );
+
+ $clone.on( 'afterCollapse.mw-collapsible', function () {
+ assert.assertTrue( $content.is( ':hidden' ), 'after collapsing: content is hidden' );
+ } );
+
+ $clone.find( '.mw-collapsible-toggle a' ).trigger( 'click' );
+ } );
}( mediaWiki, jQuery ) );