` wrappers
+ return findEntry(menu, indexOrCommand).find( ">div:first" );
+ // return findEntry(menu, indexOrCommand).children( ".ui-menu-item-wrapper" );
+ }
};
return {
@@ -37,22 +58,21 @@ function TestHelpers() {
},
entryEvent: function( menu, item, type ) {
lastItem = item;
- if ( uiVersion.major < 2 && uiVersion.minor < 11 ) {
- menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( type );
- } else {
- menu.children( ":eq(" + item + ")" ).trigger( type );
- }
+ findEntryInner(menu, item).trigger( type );
},
click: function( menu, item ) {
lastItem = item;
- if ( uiVersion.major < 2 && uiVersion.minor < 11 ) {
- menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( "click" );
- } else {
- menu.children( ":eq(" + item + ")" ).trigger( "click" );
- }
+ // console.log("click", menu, item, findEntryInner(menu, item));
+ findEntryInner(menu, item).trigger( "click" );
},
- entry: function( menu, item ) {
- return menu.children( ":eq(" + item + ")" );
+ entry: findEntry,
+ entryTitle: function( menu, item ) {
+ // return the plain text (without sub-elements)
+ var ei = findEntryInner(menu, item);
+ if ( !ei || !ei.length ) { return null; }
+ return ei.contents().filter(function() {
+ return this.nodeType === 3;
+ })[0].nodeValue;
}
};
}
@@ -68,10 +88,12 @@ jQuery(document).ready(function() {
QUnit.config.requireExpects = true;
var th = new TestHelpers(),
+ $ = jQuery,
log = th.log,
logOutput = th.logOutput,
click = th.click,
entryEvent = th.entryEvent,
+ entryTitle = th.entryTitle,
entry = th.entry,
lifecycle = {
setup: function() {
@@ -94,7 +116,6 @@ var th = new TestHelpers(),
{ title: "Sub Item 2", cmd: "sub2" }
] }
],
- $ = jQuery,
sauceLabsLog = [];
// SauceLabs integration
@@ -129,22 +150,22 @@ QUnit.done(function(testResults) {
//---------------------------------------------------------------------------
-module("prototype", lifecycle);
+QUnit.module("prototype", lifecycle);
-test("globals", function() {
- expect(2);
- ok( !!$.moogle.contextmenu, "exists in ui namnespace");
- ok( !!$.moogle.contextmenu.version, "has version number");
+QUnit.test("globals", function(assert) {
+ assert.expect(2);
+ assert.ok( !!$.moogle.contextmenu, "exists in ui namnespace");
+ assert.ok( !!$.moogle.contextmenu.version, "has version number");
});
// ---------------------------------------------------------------------------
-module("create", lifecycle);
+QUnit.module("create", lifecycle);
-function _createTest(menu) {
+function _createTest(menu, assert) {
var $ctx;
- expect(5);
+ assert.expect(5);
log( "constructor");
$("#container").contextmenu({
@@ -160,37 +181,39 @@ function _createTest(menu) {
});
log( "afterConstructor");
$ctx = $(":moogle-contextmenu");
- equal( $ctx.length, 1, "widget created");
-// ok($("#sampleMenu").hasClass( "moogle-contextmenu" ), "Class set to menu definition");
- equal( $("head style.moogle-contextmenu-style").length, 1, "global stylesheet created");
+ assert.equal( $ctx.length, 1, "widget created");
+ // equal( $("#sampleMenu").hasClass( "ui-contextmenu" ), true,
+ // "Class set to menu definition");
+ assert.equal( $("head style.moogle-contextmenu-style").length, 1, "global stylesheet created");
$ctx.contextmenu("destroy");
- equal( $(":moogle-contextmenu").length, 0, "widget destroyed");
-// ok( !$("#sampleMenu").hasClass("moogle-contextmenu"),
-// "Class removed from menu definition");
- equal( $("head style.moogle-contextmenu-style").length, 0, "global stylesheet removed");
+ assert.equal( $(":moogle-contextmenu").length, 0, "widget destroyed");
+ // equal( $("#sampleMenu").hasClass("ui-contextmenu"), false,
+ // "Class removed from menu definition");
+ assert.equal( $("head style.moogle-contextmenu-style").length, 0, "global stylesheet removed");
- equal(logOutput(), "constructor,createMenu,create,afterConstructor",
+ assert.equal(logOutput(), "constructor,createMenu,create,afterConstructor",
"Event sequence OK." );
}
-test("create from UL", function() {
- _createTest("ul#sampleMenu");
+QUnit.test("create from UL", function(assert) {
+ _createTest("ul#sampleMenu", assert);
});
-test("create from array", function() {
- _createTest(SAMPLE_MENU);
+QUnit.test("create from array", function(assert) {
+ _createTest(SAMPLE_MENU, assert);
});
//---------------------------------------------------------------------------
-module("open", lifecycle);
+QUnit.module("open", lifecycle);
-function _openTest(menu) {
- var $ctx, $popup;
+function _openTest(menu, assert) {
+ var $ctx, $popup,
+ done = assert.async();
- expect(18);
+ assert.expect(19);
$("#container").contextmenu({
delegate: ".hasmenu",
@@ -198,18 +221,18 @@ function _openTest(menu) {
beforeOpen: function(event, ui) {
log("beforeOpen");
- equal( event.type, "contextmenubeforeopen",
+ assert.equal( event.type, "contextmenubeforeopen",
"beforeOpen: Got contextmenubeforeopen event" );
- equal( ui.target.text(), "AAA",
+ assert.equal( ui.target.text(), "AAA",
"beforeOpen: ui.target is set" );
- ok( $popup.is(":hidden"),
+ assert.ok( $popup.is(":hidden"),
"beforeOpen: Menu is hidden" );
- ok( !entry($popup, 0).hasClass("ui-state-disabled"),
+ assert.ok( !entry($popup, 0).hasClass("ui-state-disabled"),
"beforeOpen: Entry 0 is enabled" );
- ok( entry($popup, 2).hasClass("ui-state-disabled"),
+ assert.ok( entry($popup, 2).hasClass("ui-state-disabled"),
"beforeOpen: Entry 2 is disabled" );
- ok($ctx.contextmenu("isOpen"), "isOpen() false in beforeOpen event");
+ assert.ok($ctx.contextmenu("isOpen"), "isOpen() false in beforeOpen event");
$("#container").contextmenu("enableEntry", "cut", false);
$("#container").contextmenu("showEntry", "copy", false);
@@ -217,59 +240,62 @@ function _openTest(menu) {
open: function(event) {
log("open");
- ok( $popup.is(":visible"),
+ assert.ok( $popup.is(":visible"),
"open: Menu is visible" );
- ok( entry($popup, 2).hasClass("ui-state-disabled"),
+ assert.ok( $popup.hasClass("ui-contextmenu"),
+ "Class removed from menu definition");
+ assert.ok( entry($popup, 2).hasClass("ui-state-disabled"),
"open: Entry is disabled" );
- ok( $ctx.contextmenu("isOpen"),
+ assert.ok( $ctx.contextmenu("isOpen"),
"isOpen() true in open event");
- ok( entry($popup, 0).is(":visible"),
+ assert.ok( entry($popup, 0).is(":visible"),
"beforeOpen: Entry 0 is visible" );
- ok( entry($popup, 0).hasClass("ui-state-disabled"),
+ assert.ok( entry($popup, 0).hasClass("ui-state-disabled"),
"beforeOpen: Entry 0 is disabled: enableEntry(false) worked" );
- ok( entry($popup, 1).is(":hidden"),
+ assert.ok( entry($popup, 1).is(":hidden"),
"beforeOpen: Entry 1 is hidden: showEntry(false) worked" );
- ok( !entry($popup, 1).hasClass("ui-state-disabled"),
+ assert.ok( !entry($popup, 1).hasClass("ui-state-disabled"),
"beforeOpen: Entry 1 is enabled" );
- equal(logOutput(), "open(),beforeOpen,after open(),open",
+ assert.equal(logOutput(), "open(),beforeOpen,after open(),open",
"Event sequence OK.");
- start();
+ done();
}
});
$ctx = $(":moogle-contextmenu");
$popup = $ctx.contextmenu("getMenu");
- ok($popup, "getMenu() works");
- ok(!$ctx.contextmenu("isOpen"), "menu initially closed");
+ assert.ok($popup, "getMenu() works");
+ assert.ok(!$ctx.contextmenu("isOpen"), "menu initially closed");
- equal( $ctx.length, 1, "widget created");
- ok($popup.is(":hidden"), "Menu is hidden");
+ assert.equal( $ctx.length, 1, "widget created");
+ assert.ok($popup.is(":hidden"), "Menu is hidden");
log("open()");
$ctx.contextmenu("open", $("span.hasmenu:first"));
log("after open()");
}
-asyncTest("UL menu", function() {
- _openTest("ul#sampleMenu");
+QUnit.test("UL menu", function(assert) {
+ _openTest("ul#sampleMenu", assert);
});
-asyncTest("Array menu", function() {
- _openTest(SAMPLE_MENU);
+QUnit.test("Array menu", function(assert) {
+ _openTest(SAMPLE_MENU, assert);
});
//---------------------------------------------------------------------------
-module("click event sequence", lifecycle);
+QUnit.module("click event sequence", lifecycle);
-function _clickTest(menu) {
- var $ctx, $popup;
+function _clickTest(menu, assert) {
+ var $ctx, $popup,
+ done = assert.async();
- expect(3);
+ assert.expect(13);
$("#container").contextmenu({
delegate: ".hasmenu",
@@ -278,6 +304,9 @@ function _clickTest(menu) {
// hide: false,
beforeOpen: function(event, ui) {
log("beforeOpen(" + ui.target.text() + ")");
+ assert.equal( ui.target.text(), "AAA", "beforeOpen: ui.target is set" );
+ assert.equal( ui.extraData.foo, "bar", "beforeOpen: ui.extraData is set" );
+ ui.extraData.helloFromBO = true;
},
create: function(event, ui) {
log("create");
@@ -285,7 +314,7 @@ function _clickTest(menu) {
createMenu: function(event, ui) {
log("createMenu");
},
- /*TODO: Seems that focus gets called twice in Safary, but nod PhantomJS */
+ /*TODO: Seems that focus gets called twice in Safary, but not PhantomJS */
// focus: function(event, ui) {
// var t = ui.item ? $(ui.item).find("a:first").attr("href") : ui.item;
// log("focus(" + t + ")");
@@ -303,18 +332,30 @@ function _clickTest(menu) {
// window.console.log("select");
var t = ui.item ? $(ui.item).attr("data-command") : ui.item;
log("select(" + t + ")");
- equal( ui.cmd, "cut", "select: ui.cmd is set" );
- equal( ui.target.text(), "AAA", "select: ui.target is set" );
+ assert.equal( ui.cmd, "cut", "select: ui.cmd is set" );
+ assert.equal( ui.target.text(), "AAA", "select: ui.target is set" );
+ assert.equal( ui.extraData.foo, "bar", "select: ui.extraData is set" );
+ assert.equal( ui.extraData.helloFromBO, true, "select: ui.extraData is maintained" );
},
- open: function(event) {
+ open: function(event, ui) {
log("open");
+ assert.equal( ui.target.text(), "AAA", "open: ui.target is set" );
+ assert.equal( ui.extraData.foo, "bar", "open: ui.extraData is set" );
+ assert.equal( ui.extraData.helloFromBO, true, "open: ui.extraData is maintained" );
setTimeout(function() {
entryEvent($popup, 0, "mouseenter");
click($popup, 0);
}, 10);
},
- close: function(event) {
+ close: function(event, ui) {
log("close");
+ assert.equal( ui.target.text(), "AAA", "close: ui.target is set" );
+ assert.equal( ui.extraData.foo, "bar", "close: ui.extraData is set" );
+ assert.equal( ui.extraData.helloFromBO, true, "close: ui.extraData is maintained" );
+ assert.equal(logOutput(),
+ "createMenu,create,open(),beforeOpen(AAA),after open(),open,select(cut),close",
+ "Event sequence OK.");
+ done();
}
});
@@ -322,45 +363,42 @@ function _clickTest(menu) {
$popup = $ctx.contextmenu("getMenu");
log("open()");
- $ctx.contextmenu("open", $("span.hasmenu:first"));
+ $ctx.contextmenu("open", $("span.hasmenu:first"), { foo: "bar" });
log("after open()");
-
- setTimeout(function() {
- // TODO: why is focus() called twice?
- equal(logOutput(),
- "createMenu,create,open(),beforeOpen(AAA),after open(),open,select(cut),close",
- "Event sequence OK.");
- start();
- }, 1000);
}
-asyncTest("Array menu", function() {
- _clickTest(SAMPLE_MENU);
+QUnit.test("Array menu", function(assert) {
+ _clickTest(SAMPLE_MENU, assert);
});
-asyncTest("UL menu", function() {
- _clickTest("ul#sampleMenu");
+QUnit.test("UL menu", function(assert) {
+ _clickTest("ul#sampleMenu", assert);
});
// ****************************************************************************
-module("'action' option", lifecycle);
+QUnit.module("Dynmic options", lifecycle);
-asyncTest("Array menu", function() {
+QUnit.test("'action' option", function(assert) {
var $ctx, $popup,
menu = [
- { title: "Cut", cmd: "cut", uiIcon: "ui-icon-scissors",
- action: function(event, ui) {
- log("cut action");
- equal( ui.cmd, "cut", "action: ui.cmd is set" );
- equal( ui.target.text(), "AAA", "action: ui.target is set" );
- }
- },
- { title: "Copy", cmd: "copy", uiIcon: "ui-icon-copy" },
- { title: "Paste", cmd: "paste", uiIcon: "ui-icon-clipboard", disabled: true }
- ];
+ { title: "Cut", cmd: "cut", uiIcon: "ui-icon-scissors",
+ data: { foo: "bar" }, addClass: "custom-class-1",
+ action: function(event, ui) {
+ log("cut action");
+ assert.equal( ui.cmd, "cut", "action: ui.cmd is set" );
+ assert.equal( ui.target.text(), "AAA", "action: ui.target is set" );
+ assert.equal( ui.item.data().foo, "bar", "action: ui.item.data() is set" );
+ assert.ok( ui.item.hasClass("custom-class-1"),
+ "action: addClass property works" );
+ }
+ },
+ { title: "Copy", cmd: "copy", uiIcon: "ui-icon-copy" },
+ { title: "Paste", cmd: "paste", uiIcon: "ui-icon-clipboard", disabled: true }
+ ],
+ done = assert.async();
- expect(5);
+ assert.expect(9);
$("#container").contextmenu({
delegate: ".hasmenu",
@@ -374,11 +412,17 @@ asyncTest("Array menu", function() {
select: function(event, ui) {
var t = ui.item ? $(ui.item).attr("data-command") : ui.item;
log("select(" + t + ")");
- equal( ui.cmd, "cut", "select: ui.cmd is set" );
- equal( ui.target.text(), "AAA", "select: ui.target is set" );
+ assert.equal( ui.cmd, "cut", "select: ui.cmd is set" );
+ assert.equal( ui.target.text(), "AAA", "select: ui.target is set" );
+ assert.equal( ui.item.data().foo, "bar", "ui.item.data() is set" );
+ assert.ok( ui.item.hasClass("custom-class-1"), "addClass property works" );
},
close: function(event) {
log("close");
+ assert.equal(logOutput(),
+ "open(),after open(),open,select(cut),cut action,close",
+ "Event sequence OK.");
+ done();
}
});
@@ -388,12 +432,235 @@ asyncTest("Array menu", function() {
log("open()");
$ctx.contextmenu("open", $("span.hasmenu:first"));
log("after open()");
+});
- setTimeout(function() {
- equal(logOutput(), "open(),after open(),open,select(cut),cut action,close",
- "Event sequence OK.");
- start();
- }, 500);
+QUnit.test("'tooltip' / 'disabled' options", function(assert) {
+ var $ctx, $popup,
+ menu = [ {
+ title: "Cut", cmd: "cut", tooltip: function(event, ui) {
+ log("tooltip(cut)");
+ assert.equal( ui.cmd, "cut", "ui.cmd is set" );
+ assert.equal( ui.target.text(), "AAA", "ui.target is set" );
+ assert.equal( ui.item.text(), "Cut", "ui.item is set" );
+ return "dynamic tt";
+ }
+ },
+ { title: "Copy", cmd: "copy", tooltip: "static tt" },
+ { title: "Paste", cmd: "paste", disabled: true },
+ { title: "Delete", cmd: "delete", disabled: function(event, ui) {
+ log("disabled(delete)");
+ return false;
+ }
+ },
+ { title: "Edit", cmd: "edit", disabled: function(event, ui) {
+ log("disabled(edit)");
+ return true; }
+ },
+ { title: "Hidden", cmd: "hidden", disabled: function(event, ui) {
+ log("disabled(hidden)");
+ return "hide";
+ }
+ }
+ ],
+ done = assert.async();
+
+ assert.expect(12);
+
+ $("#container").contextmenu({
+ delegate: ".hasmenu",
+ menu: menu,
+ open: function(event) {
+ log("open");
+ assert.equal(entry($popup, "cut").attr("title"), "dynamic tt",
+ "tooltip callback result was used");
+ assert.equal(entry($popup, "copy").attr("title"), "static tt",
+ "static tooltip value was used");
+
+ assert.equal(entry($popup, "paste").hasClass("ui-state-disabled"), true,
+ "static disabled value was used");
+ assert.equal(entry($popup, "delete").hasClass("ui-state-disabled"), false,
+ "dynamic disabled value 'false' was used");
+ assert.ok(entry($popup, "delete").is(":visible"),
+ "dynamic disabled value 'false' does not hide");
+ assert.equal(entry($popup, "paste").hasClass("ui-state-disabled"), true,
+ "dynamic disabled value 'true' was used");
+ assert.ok(entry($popup, "delete").is(":visible"),
+ "dynamic disabled value 'true' does not hide");
+ assert.ok(entry($popup, "hidden").is(":hidden"),
+ "dynamic disabled value 'hide' was used");
+
+ // Click s.th. to close the menu
+ setTimeout(function() {
+ click($popup, 0);
+ }, 10);
+ },
+ close: function(event) {
+ log("close");
+ assert.equal(logOutput(),
+ "open(),tooltip(cut),disabled(delete),disabled(edit),disabled(hidden)," +
+ "after open(),open,close",
+ "Event sequence OK.");
+ done();
+ }
});
+ $ctx = $(":moogle-contextmenu");
+ $popup = $ctx.contextmenu("getMenu");
+
+ log("open()");
+ $ctx.contextmenu("open", $("span.hasmenu:first"));
+ log("after open()");
+});
+
+// ****************************************************************************
+
+QUnit.module("'beforeOpen' event", lifecycle);
+
+QUnit.test("modify on open", function(assert) {
+ var $ctx, $popup,
+ menu = [
+ { title: "Entry 1", cmd: "e1", uiIcon: "ui-icon-copy" },
+ { title: "Entry 2", cmd: "e2", uiIcon: "ui-icon-copy" },
+ { title: "Entry 3", cmd: "e3", uiIcon: "ui-icon-copy" },
+ { title: "Entry 4", cmd: "e4", uiIcon: "ui-icon-copy" },
+ { title: "Entry 5", cmd: "e5", uiIcon: "ui-icon-copy" },
+ { title: "Entry 6", cmd: "e6", uiIcon: "ui-icon-copy" },
+ { title: "Entry 7", cmd: "e7", uiIcon: "ui-icon-copy" },
+ { title: "Entry 8", cmd: "e8", uiIcon: "ui-icon-copy" },
+ { title: "Entry 9", cmd: "e9", uiIcon: "ui-icon-copy" }
+ ],
+ done = assert.async();
+
+ assert.expect(29);
+
+ $("#container").contextmenu({
+ delegate: ".hasmenu",
+ menu: menu,
+ beforeOpen: function(event, ui) {
+ log("beforeOpen");
+ $ctx
+ .contextmenu("setTitle", "e1", "Entry 1 - changed")
+ .contextmenu("setEntry", "e2", { uiIcon: "ui-icon-changed" })
+ .contextmenu("setEntry", "e3", {
+ title: "Entry 3 - changed", cmd: "e3",
+ children: [
+ { title: "Sub 1", cmd: "e3_1" },
+ { title: "Sub 2", cmd: "e3_2", disabled: true }
+ ]
+ } )
+ .contextmenu("setEntry", "e4", { title: "Entry 4 - changed", cmd: "e4_changed" })
+ .contextmenu("updateEntry", "e5", { uiIcon: "ui-icon-changed" });
+ },
+ open: function(event) {
+ log("open");
+ // setTitle()
+ assert.equal(entryTitle($popup, "e1"), "Entry 1 - changed",
+ "setTitle(string) changed title");
+ assert.equal(entry($popup, "e1").find("span.ui-icon").length, 1,
+ "setTitle(string) keeps existing icon");
+
+ // setEntry() with icon
+ assert.equal(entry($popup, "e2").find("span.ui-icon-changed").length, 1,
+ "setEntry(
) sets icon");
+ assert.equal(entryTitle($popup, "e2"), "undefined",
+ "setEntry() resets title");
+
+ // setEntry() with new sub-elements
+ assert.equal(entryTitle($popup, "e3"), "Entry 3 - changed",
+ "setEntry(object) set nested title");
+ assert.ok( !entry($popup, "e3").hasClass("ui-state-disabled"),
+ "setEntry(object) has reset 'disabled' attribute");
+ assert.equal(entryTitle($popup, "e3_1"), "Sub 1",
+ "setEntry(object) created nested entry");
+ assert.ok(entry($popup, "e3_2").hasClass("ui-state-disabled"),
+ "setEntry(object) created nested disabled entry");
+
+ // setEntry() with different CMD
+ assert.equal(entry($popup, "e4").length, 0,
+ "setEntry(object) change command id (old is gone)");
+ assert.equal(entry($popup, "e4_changed").length, 1,
+ "setEntry(object) change command id (new is set)");
+ assert.equal(entryTitle($popup, "e4_changed"), "Entry 4 - changed",
+ "setEntry(object) set title");
+
+ // updateEntry() with icon
+ assert.equal(entry($popup, "e5").find("span.ui-icon-changed").length, 1,
+ "updateEntry() sets icon");
+ assert.equal(entryTitle($popup, "e5"), "Entry 5",
+ "updateEntry() keeps title");
+
+ // Some more on-the-fly modifications
+
+ assert.ok( !entry($popup, "e9").is(":hidden"),
+ "Entry 9 is visible" );
+ assert.ok( !entry($popup, "e9").hasClass("ui-state-disabled"),
+ "Entry 9 is enabled" );
+
+ $ctx.contextmenu("enableEntry", "e9", false);
+ assert.ok( entry($popup, "e9").hasClass("ui-state-disabled"),
+ "enableEntry(false)" );
+
+ $ctx.contextmenu("setIcon", "e9", "ui-icon-changed");
+ assert.equal(entry($popup, "e9").find("span.ui-icon-changed").length, 1,
+ "setIcon()");
+
+ $ctx.contextmenu("setTitle", "e9", "Entry 9 - changed");
+ assert.equal(entryTitle($popup, "e9"), "Entry 9 - changed",
+ "setTitle()");
+
+ $ctx.contextmenu("showEntry", "e9", false);
+ assert.ok( entry($popup, "e9").is(":hidden"),
+ "showEntry(false)" );
+
+ // Use updateEntry()
+ $ctx.contextmenu("updateEntry", "e9", {
+ title: "Entry 9 - updated",
+ uiIcon: "ui-icon-updated",
+ tooltip: "tooltip updated",
+ disabled: false,
+ hide: false,
+ data: { foo: "bar" },
+ setClass: "custom-class"
+ });
+ assert.ok( !entry($popup, "e9").hasClass("ui-state-disabled"),
+ "updateEntry(disabled: false)" );
+ assert.equal(entry($popup, "e9").find("span.ui-icon-updated").length, 1,
+ "updateEntry(icon)");
+ assert.ok( !entry($popup, "e9").is(":hidden"),
+ "updateEntry(hide: false)" );
+ assert.equal(entryTitle($popup, "e9"), "Entry 9 - updated",
+ "updateEntry(title)");
+ assert.equal(entry($popup, "e9").attr("title"), "tooltip updated",
+ "updateEntry(tooltip)");
+ assert.equal(entry($popup, "e9").data().foo, "bar",
+ "updateEntry(data)");
+ assert.ok(entry($popup, "e9").is(".ui-menu-item.custom-class"),
+ "updateEntry(setClass)");
+
+ setTimeout(function() {
+ click($popup, "e1");
+ }, 10);
+ },
+ select: function(event, ui) {
+ var t = ui.item ? $(ui.item).attr("data-command") : ui.item;
+ log("select(" + t + ")");
+ assert.equal( ui.cmd, "e1", "select: ui.cmd is set" );
+ assert.equal( ui.target.text(), "AAA", "select: ui.target is set" );
+ },
+ close: function(event) {
+ log("close");
+ assert.equal(logOutput(), "open(),beforeOpen,after open(),open,select(e1),close",
+ "Event sequence OK.");
+ done();
+ }
+ });
+
+ $ctx = $(":moogle-contextmenu");
+ $popup = $ctx.contextmenu("getMenu");
+
+ log("open()");
+ $ctx.contextmenu("open", $("span.hasmenu:first"));
+ log("after open()");
+});
+
});
diff --git a/test/tests2.js b/test/tests2.js
deleted file mode 100644
index 57d1b1e..0000000
--- a/test/tests2.js
+++ /dev/null
@@ -1,234 +0,0 @@
- // jQUnit defines:
- // asyncTest,deepEqual,equal,expect,module,notDeepEqual,notEqual,notStrictEqual,ok,QUnit,raises,start,stop,strictEqual,test
-
- /*globals asyncTest,equal,expect,module,ok,QUnit,start,test */
-
-/**
- * Tools inspired by https://github.com/jquery/jquery-ui/blob/master/tests/unit/menu/
- */
-function TestHelpers() {
-
- var lastItem = "",
- log = [],
- $ = jQuery;
-
- return {
- log: function( message, clear ) {
- if ( clear ) {
- log.length = 0;
- }
- if ( message === undefined ) {
- message = lastItem;
- }
-// window.console.log(message);
- log.push( $.trim( message ) );
- },
- logOutput: function() {
- return log.join( "," );
- },
- clearLog: function() {
- log.length = 0;
- },
- click: function( menu, item ) {
- lastItem = item;
- window.console.log("click: ", menu.children( ":eq(" + item + ")" ).find( "a:first" ).length);
- menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( "click" );
- },
- entry: function( menu, item ) {
- return menu.children( ":eq(" + item + ")" );
- }
- };
-}
-
-// ****************************************************************************
-
-jQuery(document).ready(function(){
-
-/*******************************************************************************
- * QUnit setup
- */
-QUnit.log(function(data) {
- if (window.console && window.console.log) {
-// window.console.log(data.result + " :: " + data.message);
- }
-});
-QUnit.config.requireExpects = true;
-
-var th = new TestHelpers(),
- log = th.log,
- logOutput = th.logOutput,
- click = th.click,
- entry = th.entry,
- lifecycle = {
- setup: function () {
- th.clearLog();
- // Always create a fresh copy of the menu