Skip to content

Commit cfc27c0

Browse files
committed
add event test
1 parent df80572 commit cfc27c0

File tree

1 file changed

+218
-0
lines changed

1 file changed

+218
-0
lines changed

test/tests2.js

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
// jQUnit defines:
2+
// asyncTest,deepEqual,equal,expect,module,notDeepEqual,notEqual,notStrictEqual,ok,QUnit,raises,start,stop,strictEqual,test
3+
4+
/*globals asyncTest,equal,expect,module,ok,QUnit,start,test */
5+
6+
/**
7+
* Tools inspired by https://github.com/jquery/jquery-ui/blob/master/tests/unit/menu/
8+
*/
9+
function TestHelpers() {
10+
11+
var lastItem = "",
12+
log = [],
13+
$ = jQuery;
14+
15+
return {
16+
log: function( message, clear ) {
17+
if ( clear ) {
18+
log.length = 0;
19+
}
20+
if ( message === undefined ) {
21+
message = lastItem;
22+
}
23+
// window.console.log(message);
24+
log.push( $.trim( message ) );
25+
},
26+
logOutput: function() {
27+
return log.join( "," );
28+
},
29+
clearLog: function() {
30+
log.length = 0;
31+
},
32+
click: function( menu, item ) {
33+
lastItem = item;
34+
window.console.log("clck: ", menu.children( ":eq(" + item + ")" ).find( "a:first" ).length);
35+
menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( "click" );
36+
},
37+
entry: function( menu, item ) {
38+
return menu.children( ":eq(" + item + ")" );
39+
}
40+
};
41+
}
42+
43+
// ****************************************************************************
44+
45+
jQuery(document).ready(function(){
46+
47+
/*******************************************************************************
48+
* QUnit setup
49+
*/
50+
QUnit.log(function(data) {
51+
if (window.console && window.console.log) {
52+
// window.console.log(data.result + " :: " + data.message);
53+
}
54+
});
55+
QUnit.config.requireExpects = true;
56+
57+
var th = new TestHelpers(),
58+
log = th.log,
59+
logOutput = th.logOutput,
60+
click = th.click,
61+
entry = th.entry,
62+
lifecycle = {
63+
setup: function () {
64+
th.clearLog();
65+
},
66+
teardown: function () {
67+
$(":moogle-contextmenu").contextmenu("destroy");
68+
}
69+
},
70+
SAMPLE_MENU = [
71+
{title: "Cut", cmd: "cut", uiIcon: "ui-icon-scissors"},
72+
{title: "Copy", cmd: "copy", uiIcon: "ui-icon-copy"},
73+
{title: "Paste", cmd: "paste", uiIcon: "ui-icon-clipboard", disabled: true },
74+
{title: "----"},
75+
{title: "More", children: [
76+
{title: "Sub Item 1", cmd: "sub1"},
77+
{title: "Sub Item 2", cmd: "sub2"}
78+
]}
79+
],
80+
$ = jQuery;
81+
82+
83+
84+
85+
// ---------------------------------------------------------------------------
86+
87+
//---------------------------------------------------------------------------
88+
89+
module("open", lifecycle);
90+
91+
function _openTest(menu){
92+
var $ctx, $popup;
93+
94+
expect(11);
95+
96+
$("#container").contextmenu({
97+
delegate: ".hasmenu",
98+
menu: menu,
99+
beforeOpen: function(event, ui){
100+
log("beforeOpen");
101+
102+
equal( event.type, "contextmenubeforeopen",
103+
"beforeOpen: Got contextmenubeforeopen event" );
104+
equal( ui.target.text(), "AAA",
105+
"beforeOpen: ui.target is set" );
106+
ok( $popup.is(":hidden"), "beforeOpen: Menu is hidden" );
107+
ok( ! entry($popup, 0).hasClass("ui-state-disabled"),
108+
"beforeOpen: Entry 0 is enabled" );
109+
ok( entry($popup, 2).hasClass("ui-state-disabled"),
110+
"beforeOpen: Entry 2 is disabled" );
111+
112+
$("#container").contextmenu("enableEntry", "cut", false);
113+
114+
ok( entry($popup, 0).hasClass("ui-state-disabled"),
115+
"beforeOpen: Entry 0 is disabled" );
116+
},
117+
open: function(event){
118+
log("open");
119+
120+
ok( $popup.is(":visible"), "open: Menu is visible" );
121+
ok( entry($popup, 2).hasClass("ui-state-disabled"), "open: Entry is disabled" );
122+
123+
equal(logOutput(), "open(),beforeOpen,after open(),open",
124+
"Event sequence OK.");
125+
start();
126+
}
127+
});
128+
129+
$ctx = $(":moogle-contextmenu");
130+
$popup = $ctx.contextmenu("getMenu");
131+
132+
equal( $ctx.length, 1, "widget created");
133+
ok($popup.is(":hidden"), "Menu is hidden");
134+
log("open()");
135+
$ctx.contextmenu("open", $("span.hasmenu:first"));
136+
log("after open()");
137+
}
138+
139+
140+
asyncTest("UL menu", function(){
141+
_openTest("ul#sampleMenu1");
142+
});
143+
//asyncTest("UL menu", function(){
144+
// _openTest("ul#sampleMenu1");
145+
//});
146+
147+
148+
//asyncTest("Array menu", function(){
149+
// _openTest(SAMPLE_MENU);
150+
//});
151+
152+
153+
//---------------------------------------------------------------------------
154+
155+
module("click event sequence", lifecycle);
156+
157+
function _clickTest(menu){
158+
var $ctx, $popup;
159+
160+
expect(3);
161+
162+
$("#container").contextmenu({
163+
delegate: ".hasmenu",
164+
menu: menu,
165+
beforeOpen: function(event, ui){
166+
log("beforeOpen(" + ui.target.text() + ")");
167+
},
168+
create: function(event, ui){
169+
log("create");
170+
},
171+
createMenu: function(event, ui){
172+
log("createMenu");
173+
},
174+
select: function(event, ui){
175+
window.console.log("select");
176+
var t = ui.item ? $(ui.item).find("a:first").attr("href") : ui.item;
177+
log("select(" + t + ")");
178+
equal( ui.cmd, "cut", "select: ui.cmd is set" );
179+
equal( ui.target.text(), "AAA", "select: ui.target is set" );
180+
},
181+
open: function(event){
182+
log("open");
183+
setTimeout(function(){
184+
click($popup, 0);
185+
}, 10);
186+
},
187+
close: function(event){
188+
log("close");
189+
}
190+
});
191+
192+
$ctx = $(":moogle-contextmenu");
193+
$popup = $ctx.contextmenu("getMenu");
194+
195+
log("open()");
196+
$ctx.contextmenu("open", $("span.hasmenu:first"));
197+
log("after open()");
198+
199+
setTimeout(function(){
200+
// TODO: why is focus() called twice?
201+
equal(logOutput(), "createMenu,create,open(),beforeOpen(AAA),after open(),open,select(#cut),close",
202+
"Event sequence OK.");
203+
start();
204+
}, 4000);
205+
}
206+
207+
208+
//asyncTest("Array menu", function(){
209+
// _clickTest(SAMPLE_MENU);
210+
//});
211+
212+
213+
asyncTest("UL menu", function(){
214+
_clickTest("ul#sampleMenu1");
215+
});
216+
217+
218+
});

0 commit comments

Comments
 (0)