aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/dialog
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/dialog')
-rw-r--r--tests/unit/dialog/dialog_methods.js33
-rw-r--r--tests/unit/dialog/dialog_options.js36
2 files changed, 60 insertions, 9 deletions
diff --git a/tests/unit/dialog/dialog_methods.js b/tests/unit/dialog/dialog_methods.js
index b4c58c31e..efca71fd8 100644
--- a/tests/unit/dialog/dialog_methods.js
+++ b/tests/unit/dialog/dialog_methods.js
@@ -34,7 +34,9 @@ test("init", function() {
});
test("destroy", function() {
- expect( 7 );
+ expect( 17 );
+
+ var el, el2;
$( "#dialog1, #form-dialog" ).hide();
domEqual( "#dialog1", function() {
@@ -57,6 +59,35 @@ test("destroy", function() {
domEqual( "#dialog1", function() {
$( "#dialog1" ).dialog().dialog( "destroy" );
});
+
+ // Don't throw errors when destroying a never opened modal dialog (#9004)
+ $( "#dialog1" ).dialog({ autoOpen: false, modal: true }).dialog( "destroy" );
+ equal( $( ".ui-widget-overlay" ).length, 0, "overlay does not exist" );
+ equal( $.ui.dialog.overlayInstances, 0, "overlayInstances equals the number of open overlays");
+
+ el = $( "#dialog1" ).dialog({ modal: true }),
+ el2 = $( "#dialog2" ).dialog({ modal: true });
+ equal( $( ".ui-widget-overlay" ).length, 2, "overlays created when dialogs are open" );
+ equal( $.ui.dialog.overlayInstances, 2, "overlayInstances equals the number of open overlays" );
+ el.dialog( "close" );
+ equal( $( ".ui-widget-overlay" ).length, 1, "overlay remains after closing one dialog" );
+ equal( $.ui.dialog.overlayInstances, 1, "overlayInstances equals the number of open overlays" );
+ el.dialog( "destroy" );
+ equal( $( ".ui-widget-overlay" ).length, 1, "overlay remains after destroying one dialog" );
+ equal( $.ui.dialog.overlayInstances, 1, "overlayInstances equals the number of open overlays" );
+ el2.dialog( "destroy" );
+ equal( $( ".ui-widget-overlay" ).length, 0, "overlays removed when all dialogs are destoryed" );
+ equal( $.ui.dialog.overlayInstances, 0, "overlayInstances equals the number of open overlays" );
+});
+
+asyncTest("#9000: Dialog leaves broken event handler after close/destroy in certain cases", function() {
+ expect( 1 );
+ $( "#dialog1" ).dialog({ modal:true }).dialog( "close" ).dialog( "destroy" );
+ setTimeout(function() {
+ $( "#favorite-animal" ).focus();
+ ok( true, "close and destroy modal dialog before its really opened" );
+ start();
+ }, 2 );
});
test("#4980: Destroy should place element back in original DOM position", function(){
diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js
index a20480de6..5f0434308 100644
--- a/tests/unit/dialog/dialog_options.js
+++ b/tests/unit/dialog/dialog_options.js
@@ -6,43 +6,63 @@
module("dialog: options");
test( "appendTo", function() {
- expect( 8 );
+ expect( 16 );
var detached = $( "<div>" ),
- element = $( "#dialog1" ).dialog();
+ element = $( "#dialog1" ).dialog({
+ modal: true
+ });
equal( element.dialog( "widget" ).parent()[0], document.body, "defaults to body" );
+ equal( $( ".ui-widget-overlay" ).parent()[0], document.body, "overlay defaults to body" );
element.dialog( "destroy" );
element.dialog({
- appendTo: ".wrap"
+ appendTo: ".wrap",
+ modal: true
});
equal( element.dialog( "widget" ).parent()[0], $( "#wrap1" )[0], "first found element" );
+ equal( $( ".ui-widget-overlay" ).parent()[0], $( "#wrap1" )[0], "overlay first found element" );
equal( $( "#wrap2 .ui-dialog" ).length, 0, "only appends to one element" );
+ equal( $( "#wrap2 .ui-widget-overlay" ).length, 0, "overlay only appends to one element" );
element.dialog( "destroy" );
element.dialog({
- appendTo: null
+ appendTo: null,
+ modal: true
});
equal( element.dialog( "widget" ).parent()[0], document.body, "null" );
+ equal( $( ".ui-widget-overlay" ).parent()[0], document.body, "overlay null" );
element.dialog( "destroy" );
- element.dialog({ autoOpen: false }).dialog( "option", "appendTo", "#wrap1" ).dialog( "open" );
+ element.dialog({
+ autoOpen: false,
+ modal: true
+ }).dialog( "option", "appendTo", "#wrap1" ).dialog( "open" );
equal( element.dialog( "widget" ).parent()[0], $( "#wrap1" )[0], "modified after init" );
+ equal( $( ".ui-widget-overlay" ).parent()[0], $( "#wrap1" )[0], "overlay modified after init" );
element.dialog( "destroy" );
element.dialog({
- appendTo: detached
+ appendTo: detached,
+ modal: true
});
equal( element.dialog( "widget" ).parent()[0], detached[0], "detached jQuery object" );
+ equal( detached.find( ".ui-widget-overlay" ).parent()[0], detached[0], "overlay detached jQuery object" );
element.dialog( "destroy" );
element.dialog({
- appendTo: detached[0]
+ appendTo: detached[0],
+ modal: true
});
equal( element.dialog( "widget" ).parent()[0], detached[0], "detached DOM element" );
+ equal( detached.find( ".ui-widget-overlay" ).parent()[0], detached[0], "overlay detached DOM element" );
element.dialog( "destroy" );
- element.dialog({ autoOpen: false }).dialog( "option", "appendTo", detached );
+ element.dialog({
+ autoOpen: false,
+ modal: true
+ }).dialog( "option", "appendTo", detached );
equal( element.dialog( "widget" ).parent()[0], detached[0], "detached DOM element via option()" );
+ equal( detached.find( ".ui-widget-overlay" ).length, 0, "overlay detached DOM element via option()" );
element.dialog( "destroy" );
});