Tests: Workaround a dialog test issue by a proper cleanup

The `#favorite-animal` focus & blur handlers used to not be cleaned up after
the test automatically, leading to issues with some jQuery versions.
This commit is contained in:
Michał Gołębiowski-Owczarek 2023-05-10 13:39:56 +02:00
parent 23655f0dbd
commit b715135d11
No known key found for this signature in database

View 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 ) { QUnit.test( "#8958: dialog can be opened while opening", function( assert ) {
var ready = assert.async(); var ready = assert.async( 3 );
assert.expect( 1 ); assert.expect( 1 );
var element = $( "<div>" ).dialog( { var element = $( "<div>" ).dialog( {
@ -227,7 +227,7 @@ QUnit.test( "#8958: dialog can be opened while opening", function( assert ) {
} ); } );
// Support: IE8 // 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. // focus the body first, causing the test to hang.
$( "body" ).trigger( "focus" ); $( "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. // the dialog to gain focus, thus blurring the input.
.on( "focus", function() { .on( "focus", function() {
element.dialog( "open" ); element.dialog( "open" );
ready();
} ) } )
// When the input blurs, the dialog is in the process of opening. We // 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. // being opened.
.on( "blur", function() { .on( "blur", function() {
element.dialog( "open" ); 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" ); .trigger( "focus" );
} ); } );