]> source.dussan.org Git - jquery-ui.git/commitdiff
Tests: Workaround a dialog test issue by a proper cleanup
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>
Wed, 10 May 2023 11:39:56 +0000 (13:39 +0200)
committerMichał Gołębiowski-Owczarek <m.goleb@gmail.com>
Wed, 10 May 2023 15:34:14 +0000 (17:34 +0200)
The `#favorite-animal` focus & blur handlers used to not be cleaned up after
the test automatically, leading to issues with some jQuery versions.

tests/unit/dialog/methods.js

index 5d01f223d6cbceb9ba1f0661326d2c0c4c27ef65..cfdc44bb2f21989e0d5ac6cb0711cbe3e7e97722 100644 (file)
@@ -214,7 +214,7 @@ QUnit.test( "Ensure form elements don't reset when opening a dialog", function(
 } );
 
 QUnit.test( "#8958: dialog can be opened while opening", function( assert ) {
-       var ready = assert.async();
+       var ready = assert.async( 3 );
        assert.expect( 1 );
 
        var element = $( "<div>" ).dialog( {
@@ -227,7 +227,7 @@ QUnit.test( "#8958: dialog can be opened while opening", function( assert ) {
        } );
 
        // Support: IE8
-       // For some reason the #favorite-color input doesn't get focus if we don't
+       // For some reason the #favorite-animal input doesn't get focus if we don't
        // focus the body first, causing the test to hang.
        $( "body" ).trigger( "focus" );
 
@@ -238,6 +238,7 @@ QUnit.test( "#8958: dialog can be opened while opening", function( assert ) {
                // the dialog to gain focus, thus blurring the input.
                .on( "focus", function() {
                        element.dialog( "open" );
+                       ready();
                } )
 
                // When the input blurs, the dialog is in the process of opening. We
@@ -246,6 +247,12 @@ QUnit.test( "#8958: dialog can be opened while opening", function( assert ) {
                // being opened.
                .on( "blur", function() {
                        element.dialog( "open" );
+
+                       // Detach the handlers to avoid firing them outside of this
+                       // test logic; this may affect other tests.
+                       $( this ).off( "focus blur" );
+
+                       ready();
                } )
                .trigger( "focus" );
 } );