]> git.proxmox.com Git - extjs.git/blame - extjs/classic/classic/test/specs/util/KeyNav.js
add extjs 6.0.1 sources
[extjs.git] / extjs / classic / classic / test / specs / util / KeyNav.js
CommitLineData
6527f429
DM
1describe("Ext.util.KeyNav", function(){\r
2 var el, nav, createNav, fireKey, defaultFn, KEYS = Ext.util.KeyNav.keyOptions;\r
3 \r
4 beforeEach(function(){\r
5 el = Ext.getBody().createChild({\r
6 id: 'test-keyNav-el'\r
7 });\r
8 \r
9 createNav = function(config){\r
10 nav = new Ext.KeyNav(el, config);\r
11 };\r
12 \r
13 fireKey = function(key, eventName, options){\r
14 jasmine.fireKeyEvent(el, nav.getKeyEvent(), key);\r
15 };\r
16 \r
17 defaultFn = jasmine.createSpy('defaultKeyNavHandler');\r
18 });\r
19 \r
20 afterEach(function(){\r
21 if (nav) {\r
22 nav.disable();\r
23 }\r
24 \r
25 el.destroy();\r
26 fireKey = el = nav = createNav = defaultFn = null;\r
27 });\r
28 \r
29 describe("keys", function(){\r
30 describe("key options", function(){\r
31 it("should fire for the left key", function(){\r
32 createNav({\r
33 left: defaultFn\r
34 }); \r
35 fireKey(KEYS.left);\r
36 expect(defaultFn).toHaveBeenCalled();\r
37 });\r
38 \r
39 it("should fire for the right key", function(){\r
40 createNav({\r
41 right: defaultFn\r
42 }); \r
43 fireKey(KEYS.right);\r
44 expect(defaultFn).toHaveBeenCalled();\r
45 });\r
46 \r
47 it("should fire for the up key", function(){\r
48 createNav({\r
49 up: defaultFn\r
50 }); \r
51 fireKey(KEYS.up);\r
52 expect(defaultFn).toHaveBeenCalled();\r
53 });\r
54 \r
55 it("should fire for the down key", function(){\r
56 createNav({\r
57 down: defaultFn\r
58 }); \r
59 fireKey(KEYS.down);\r
60 expect(defaultFn).toHaveBeenCalled();\r
61 });\r
62 \r
63 it("should fire for the pageUp key", function(){\r
64 createNav({\r
65 pageUp: defaultFn\r
66 }); \r
67 fireKey(KEYS.pageUp);\r
68 expect(defaultFn).toHaveBeenCalled();\r
69 });\r
70 \r
71 it("should fire for the pageDown key", function(){\r
72 createNav({\r
73 pageDown: defaultFn\r
74 }); \r
75 fireKey(KEYS.pageDown);\r
76 expect(defaultFn).toHaveBeenCalled();\r
77 });\r
78 \r
79 it("should fire for the del key", function(){\r
80 createNav({\r
81 del: defaultFn\r
82 }); \r
83 fireKey(KEYS.del);\r
84 expect(defaultFn).toHaveBeenCalled();\r
85 });\r
86 \r
87 it("should fire for the home key", function(){\r
88 createNav({\r
89 home: defaultFn\r
90 }); \r
91 fireKey(KEYS.home);\r
92 expect(defaultFn).toHaveBeenCalled();\r
93 });\r
94 \r
95 it("should fire for the end key", function(){\r
96 createNav({\r
97 end: defaultFn\r
98 }); \r
99 fireKey(KEYS.end);\r
100 expect(defaultFn).toHaveBeenCalled();\r
101 });\r
102 \r
103 it("should fire for the enter key", function(){\r
104 createNav({\r
105 enter: defaultFn\r
106 }); \r
107 fireKey(KEYS.enter);\r
108 expect(defaultFn).toHaveBeenCalled();\r
109 });\r
110 \r
111 it("should fire for the esc key", function(){\r
112 createNav({\r
113 esc: defaultFn\r
114 }); \r
115 fireKey(KEYS.esc);\r
116 expect(defaultFn).toHaveBeenCalled();\r
117 });\r
118 \r
119 it("should fire for the tab key", function(){\r
120 createNav({\r
121 tab: defaultFn\r
122 }); \r
123 fireKey(KEYS.tab);\r
124 expect(defaultFn).toHaveBeenCalled();\r
125 });\r
126 });\r
127 \r
128 it("should bind multiple keys at once", function(){\r
129 createNav({\r
130 left: defaultFn,\r
131 right: defaultFn\r
132 });\r
133 fireKey(KEYS.left);\r
134 fireKey(KEYS.right);\r
135 expect(defaultFn.callCount).toEqual(2);\r
136 });\r
137 });\r
138 \r
139 describe("scope/params", function(){\r
140 it("should default the scope to the nav", function(){\r
141 var actual;\r
142 createNav({\r
143 left: function(){\r
144 actual = this;\r
145 }\r
146 });\r
147 fireKey(KEYS.left);\r
148 expect(actual).toBe(nav);\r
149 });\r
150 \r
151 it("should use the passed scope", function(){\r
152 var scope = {},\r
153 actual;\r
154 createNav({\r
155 scope: scope,\r
156 left: function(){\r
157 actual = this;\r
158 }\r
159 });\r
160 fireKey(KEYS.left);\r
161 expect(actual).toBe(scope);\r
162 });\r
163 \r
164 it("should receive an event object as only argument", function(){\r
165 var realEvent;\r
166 \r
167 createNav({\r
168 enter: function(event){\r
169 realEvent = event; \r
170 }\r
171 });\r
172 fireKey(KEYS.enter);\r
173 expect(realEvent.getXY()).toBeTruthy();\r
174 expect(realEvent.type).toBeTruthy();\r
175 expect(realEvent.target).toBeTruthy();\r
176 });\r
177 });\r
178 \r
179 describe("enable/disable", function(){\r
180 beforeEach(function() {\r
181 createNav({\r
182 esc: defaultFn\r
183 });\r
184 });\r
185 \r
186 it("should be enabled by default", function(){\r
187 fireKey(KEYS.esc);\r
188 expect(defaultFn).toHaveBeenCalled();\r
189 });\r
190 \r
191 it("should not fire any events when disabled", function(){\r
192 nav.disable();\r
193 fireKey(KEYS.esc);\r
194 expect(defaultFn).not.toHaveBeenCalled();\r
195 });\r
196 \r
197 it("should fire events after being disabled then enabled", function(){\r
198 nav.disable();\r
199 fireKey(KEYS.esc);\r
200 expect(defaultFn).not.toHaveBeenCalled();\r
201 nav.enable();\r
202 fireKey(KEYS.esc);\r
203 expect(defaultFn).toHaveBeenCalled();\r
204 });\r
205 });\r
206 \r
207 describe("defaultEventAction", function() {\r
208 var ev;\r
209 \r
210 beforeEach(function() {\r
211 createNav({\r
212 tab: function(e) {\r
213 ev = e;\r
214 }\r
215 });\r
216 });\r
217 \r
218 it("should not prevent default event action by default", function() {\r
219 fireKey(KEYS.tab);\r
220 \r
221 var prevented = Ext.isIE9m ? ev.browserEvent.returnValue === false\r
222 : ev.browserEvent.defaultPrevented\r
223 ;\r
224 \r
225 expect(prevented).toBe(false);\r
226 });\r
227 });\r
228});\r