aboutsummaryrefslogtreecommitdiffstats
path: root/97suifangqa/staticfiles/plugins/jquery-ui/tests/unit/dialog/dialog_events.js
diff options
context:
space:
mode:
Diffstat (limited to '97suifangqa/staticfiles/plugins/jquery-ui/tests/unit/dialog/dialog_events.js')
-rw-r--r--97suifangqa/staticfiles/plugins/jquery-ui/tests/unit/dialog/dialog_events.js370
1 files changed, 370 insertions, 0 deletions
diff --git a/97suifangqa/staticfiles/plugins/jquery-ui/tests/unit/dialog/dialog_events.js b/97suifangqa/staticfiles/plugins/jquery-ui/tests/unit/dialog/dialog_events.js
new file mode 100644
index 0000000..7bcd567
--- /dev/null
+++ b/97suifangqa/staticfiles/plugins/jquery-ui/tests/unit/dialog/dialog_events.js
@@ -0,0 +1,370 @@
+/*
+ * dialog_events.js
+ */
+(function($) {
+
+module("dialog: events");
+
+test("open", function() {
+ expect(13);
+
+ var element = $("<div></div>");
+ element.dialog({
+ open: function(ev, ui) {
+ ok(element.data("ui-dialog")._isOpen, "interal _isOpen flag is set");
+ ok(true, "autoOpen: true fires open callback");
+ equal(this, element[0], "context of callback");
+ equal(ev.type, "dialogopen", "event type in callback");
+ deepEqual(ui, {}, "ui hash in callback");
+ }
+ });
+ element.remove();
+
+ element = $("<div></div>");
+ element.dialog({
+ autoOpen: false,
+ open: function(ev, ui) {
+ ok(true, ".dialog('open') fires open callback");
+ equal(this, element[0], "context of callback");
+ equal(ev.type, "dialogopen", "event type in callback");
+ deepEqual(ui, {}, "ui hash in callback");
+ }
+ }).bind("dialogopen", function(ev, ui) {
+ ok(element.data("ui-dialog")._isOpen, "interal _isOpen flag is set");
+ ok(true, "dialog('open') fires open event");
+ equal(this, element[0], "context of event");
+ deepEqual(ui, {}, "ui hash in event");
+ });
+ element.dialog("open");
+ element.remove();
+});
+
+
+test( "focus", function() {
+ expect( 5 );
+ var element, other;
+ element = $("#dialog1").dialog({
+ autoOpen: false
+ });
+ other = $("#dialog2").dialog({
+ autoOpen: false
+ });
+
+ element.one( "dialogopen", function() {
+ ok( true, "open, just once" );
+ });
+ element.one( "dialogfocus", function() {
+ ok( true, "focus on open" );
+ });
+ other.dialog( "open" );
+
+ element.one( "dialogfocus", function() {
+ ok( true, "when opening and already open and wasn't on top" );
+ });
+ other.dialog( "open" );
+ element.dialog( "open" );
+
+ element.one( "dialogfocus", function() {
+ ok( true, "when calling moveToTop and wasn't on top" );
+ });
+ other.dialog( "moveToTop" );
+ element.dialog( "moveToTop" );
+
+ element.bind( "dialogfocus", function() {
+ ok( true, "when mousedown anywhere on the dialog and it wasn't on top" );
+ });
+ other.dialog( "moveToTop" );
+ element.trigger( "mousedown" );
+
+ // triggers just once when already on top
+ element.dialog( "open" );
+ element.dialog( "moveToTop" );
+ element.trigger( "mousedown" );
+
+ element.add( other ).remove();
+});
+
+test("dragStart", function() {
+ expect(9);
+
+ var handle,
+ element = $("<div></div>").dialog({
+ dragStart: function(ev, ui) {
+ ok(true, "dragging fires dragStart callback");
+ equal(this, element[0], "context of callback");
+ equal(ev.type, "dialogdragstart", "event type in callback");
+ ok(ui.position !== undefined, "ui.position in callback");
+ ok(ui.offset !== undefined, "ui.offset in callback");
+ }
+ }).bind("dialogdragstart", function(ev, ui) {
+ ok(true, "dragging fires dialogdragstart event");
+ equal(this, element[0], "context of event");
+ ok(ui.position !== undefined, "ui.position in callback");
+ ok(ui.offset !== undefined, "ui.offset in callback");
+ });
+
+ handle = $(".ui-dialog-titlebar", element.dialog("widget"));
+ TestHelpers.dialog.drag(element, handle, 50, 50);
+ element.remove();
+});
+
+test("drag", function() {
+ expect(9);
+ var handle,
+ hasDragged = false,
+ element = $("<div></div>").dialog({
+ drag: function(ev, ui) {
+ if (!hasDragged) {
+ ok(true, "dragging fires drag callback");
+ equal(this, element[0], "context of callback");
+ equal(ev.type, "dialogdrag", "event type in callback");
+ ok(ui.position !== undefined, "ui.position in callback");
+ ok(ui.offset !== undefined, "ui.offset in callback");
+
+ hasDragged = true;
+ }
+ }
+ }).one("dialogdrag", function(ev, ui) {
+ ok(true, "dragging fires dialogdrag event");
+ equal(this, element[0], "context of event");
+ ok(ui.position !== undefined, "ui.position in callback");
+ ok(ui.offset !== undefined, "ui.offset in callback");
+ });
+
+ handle = $(".ui-dialog-titlebar", element.dialog("widget"));
+ TestHelpers.dialog.drag(element, handle, 50, 50);
+ element.remove();
+});
+
+test("dragStop", function() {
+ expect(9);
+
+ var handle,
+ element = $("<div></div>").dialog({
+ dragStop: function(ev, ui) {
+ ok(true, "dragging fires dragStop callback");
+ equal(this, element[0], "context of callback");
+ equal(ev.type, "dialogdragstop", "event type in callback");
+ ok(ui.position !== undefined, "ui.position in callback");
+ ok(ui.offset !== undefined, "ui.offset in callback");
+ }
+ }).bind("dialogdragstop", function(ev, ui) {
+ ok(true, "dragging fires dialogdragstop event");
+ equal(this, element[0], "context of event");
+ ok(ui.position !== undefined, "ui.position in callback");
+ ok(ui.offset !== undefined, "ui.offset in callback");
+ });
+
+ handle = $(".ui-dialog-titlebar", element.dialog("widget"));
+ TestHelpers.dialog.drag(element, handle, 50, 50);
+ element.remove();
+});
+
+test("resizeStart", function() {
+ expect(13);
+
+ var handle,
+ element = $("<div></div>").dialog({
+ resizeStart: function(ev, ui) {
+ ok(true, "resizing fires resizeStart callback");
+ equal(this, element[0], "context of callback");
+ equal(ev.type, "dialogresizestart", "event type in callback");
+ ok(ui.originalPosition !== undefined, "ui.originalPosition in callback");
+ ok(ui.originalSize !== undefined, "ui.originalSize in callback");
+ ok(ui.position !== undefined, "ui.position in callback");
+ ok(ui.size !== undefined, "ui.size in callback");
+ }
+ }).bind("dialogresizestart", function(ev, ui) {
+ ok(true, "resizing fires dialogresizestart event");
+ equal(this, element[0], "context of event");
+ ok(ui.originalPosition !== undefined, "ui.originalPosition in callback");
+ ok(ui.originalSize !== undefined, "ui.originalSize in callback");
+ ok(ui.position !== undefined, "ui.position in callback");
+ ok(ui.size !== undefined, "ui.size in callback");
+ });
+
+ handle = $(".ui-resizable-se", element.dialog("widget"));
+ TestHelpers.dialog.drag(element, handle, 50, 50);
+ element.remove();
+});
+
+test("resize", function() {
+ expect(13);
+ var handle,
+ hasResized = false,
+ element = $("<div></div>").dialog({
+ resize: function(ev, ui) {
+ if (!hasResized) {
+ ok(true, "resizing fires resize callback");
+ equal(this, element[0], "context of callback");
+ equal(ev.type, "dialogresize", "event type in callback");
+ ok(ui.originalPosition !== undefined, "ui.originalPosition in callback");
+ ok(ui.originalSize !== undefined, "ui.originalSize in callback");
+ ok(ui.position !== undefined, "ui.position in callback");
+ ok(ui.size !== undefined, "ui.size in callback");
+
+ hasResized = true;
+ }
+ }
+ }).one("dialogresize", function(ev, ui) {
+ ok(true, "resizing fires dialogresize event");
+ equal(this, element[0], "context of event");
+ ok(ui.originalPosition !== undefined, "ui.originalPosition in callback");
+ ok(ui.originalSize !== undefined, "ui.originalSize in callback");
+ ok(ui.position !== undefined, "ui.position in callback");
+ ok(ui.size !== undefined, "ui.size in callback");
+ });
+
+ handle = $(".ui-resizable-se", element.dialog("widget"));
+ TestHelpers.dialog.drag(element, handle, 50, 50);
+ element.remove();
+});
+
+test("resizeStop", function() {
+ expect(13);
+
+ var handle,
+ element = $("<div></div>").dialog({
+ resizeStop: function(ev, ui) {
+ ok(true, "resizing fires resizeStop callback");
+ equal(this, element[0], "context of callback");
+ equal(ev.type, "dialogresizestop", "event type in callback");
+ ok(ui.originalPosition !== undefined, "ui.originalPosition in callback");
+ ok(ui.originalSize !== undefined, "ui.originalSize in callback");
+ ok(ui.position !== undefined, "ui.position in callback");
+ ok(ui.size !== undefined, "ui.size in callback");
+ }
+ }).bind("dialogresizestop", function(ev, ui) {
+ ok(true, "resizing fires dialogresizestop event");
+ equal(this, element[0], "context of event");
+ ok(ui.originalPosition !== undefined, "ui.originalPosition in callback");
+ ok(ui.originalSize !== undefined, "ui.originalSize in callback");
+ ok(ui.position !== undefined, "ui.position in callback");
+ ok(ui.size !== undefined, "ui.size in callback");
+ });
+
+ handle = $(".ui-resizable-se", element.dialog("widget"));
+ TestHelpers.dialog.drag(element, handle, 50, 50);
+ element.remove();
+});
+
+asyncTest("close", function() {
+ expect(14);
+
+ var element = $("<div></div>").dialog({
+ close: function(ev, ui) {
+ ok(true, ".dialog('close') fires close callback");
+ equal(this, element[0], "context of callback");
+ equal(ev.type, "dialogclose", "event type in callback");
+ deepEqual(ui, {}, "ui hash in callback");
+ }
+ }).bind("dialogclose", function(ev, ui) {
+ ok(true, ".dialog('close') fires dialogclose event");
+ equal(this, element[0], "context of event");
+ deepEqual(ui, {}, "ui hash in event");
+ });
+ element.dialog("close");
+ element.remove();
+
+ // Close event with an effect
+ element = $("<div></div>").dialog({
+ hide: 10,
+ close: function(ev, ui) {
+ ok(true, ".dialog('close') fires close callback");
+ equal(this, element[0], "context of callback");
+ equal(ev.type, "dialogclose", "event type in callback");
+ deepEqual(ui, {}, "ui hash in callback");
+ start();
+ }
+ }).bind("dialogclose", function(ev, ui) {
+ ok(true, ".dialog('close') fires dialogclose event");
+ equal(this, element[0], "context of event");
+ deepEqual(ui, {}, "ui hash in event");
+ });
+ element.dialog("close");
+});
+
+test("beforeClose", function() {
+ expect(14);
+
+ var element = $("<div></div>").dialog({
+ beforeClose: function(ev, ui) {
+ ok(true, ".dialog('close') fires beforeClose callback");
+ equal(this, element[0], "context of callback");
+ equal(ev.type, "dialogbeforeclose", "event type in callback");
+ deepEqual(ui, {}, "ui hash in callback");
+ return false;
+ }
+ });
+
+ element.dialog("close");
+ ok( element.dialog("widget").is(":visible"), "beforeClose callback should prevent dialog from closing");
+ element.remove();
+
+ element = $("<div></div>").dialog();
+ element.dialog("option", "beforeClose", function(ev, ui) {
+ ok(true, ".dialog('close') fires beforeClose callback");
+ equal(this, element[0], "context of callback");
+ equal(ev.type, "dialogbeforeclose", "event type in callback");
+ deepEqual(ui, {}, "ui hash in callback");
+ return false;
+ });
+ element.dialog("close");
+
+ ok( element.dialog("widget").is(":visible"), "beforeClose callback should prevent dialog from closing");
+ element.remove();
+
+ element = $("<div></div>").dialog().bind("dialogbeforeclose", function(ev, ui) {
+ ok(true, ".dialog('close') triggers dialogbeforeclose event");
+ equal(this, element[0], "context of event");
+ deepEqual(ui, {}, "ui hash in event");
+ return false;
+ });
+ element.dialog("close");
+ ok( element.dialog("widget").is(":visible"), "dialogbeforeclose event should prevent dialog from closing");
+ element.remove();
+});
+
+// #8789 and #8838
+asyncTest("ensure dialog's container doesn't scroll on resize and focus", function() {
+ expect(2);
+
+ var element = $("#dialog1").dialog(),
+ initialScroll = $(window).scrollTop();
+ element.dialog("option", "height", 600);
+ equal($(window).scrollTop(), initialScroll, "scroll hasn't moved after height change");
+ setTimeout( function(){
+ $(".ui-dialog-titlebar-close").simulate("mousedown");
+ equal($(window).scrollTop(), initialScroll, "scroll hasn't moved after focus moved to dialog");
+ element.dialog("destroy");
+ start();
+ }, 500);
+});
+
+test("#5184: isOpen in dialogclose event is true", function() {
+ expect( 3 );
+
+ var element = $( "<div></div>" ).dialog({
+ close: function() {
+ ok( !element.dialog("isOpen"), "dialog is not open during close" );
+ }
+ });
+ ok( element.dialog("isOpen"), "dialog is open after init" );
+ element.dialog( "close" );
+ ok( !element.dialog("isOpen"), "dialog is not open after close" );
+ element.remove();
+});
+
+test("ensure dialog keeps focus when clicking modal overlay", function() {
+ expect( 2 );
+
+ var element = $( "<div></div>" ).dialog({
+ modal: true
+ });
+ ok( $(":focus").closest(".ui-dialog").length, "focus is in dialog" );
+ $(".ui-widget-overlay").simulate("mousedown");
+ ok( $(":focus").closest(".ui-dialog").length, "focus is still in dialog" );
+ element.remove();
+});
+
+})(jQuery);