]> git.proxmox.com Git - extjs.git/blame - extjs/packages/core/test/specs/direct/RemotingMethod.js
add extjs 6.0.1 sources
[extjs.git] / extjs / packages / core / test / specs / direct / RemotingMethod.js
CommitLineData
6527f429
DM
1describe("Ext.direct.RemotingMethod", function() {\r
2 var cb = jasmine.createSpy('callback'),\r
3 opt = { timeout: 10 },\r
4 method;\r
5 \r
6 function makeMethod(params) {\r
7 method = new Ext.direct.RemotingMethod(params || {});\r
8 }\r
9 \r
10 afterEach(function() {\r
11 method = null;\r
12 });\r
13 \r
14 describe("Ordered parameters", function() {\r
15 beforeEach(function() {\r
16 makeMethod({\r
17 name: 'foo',\r
18 len: 2\r
19 });\r
20 });\r
21 \r
22 it("should instantiate", function() {\r
23 expect(method).toBeDefined();\r
24 });\r
25 \r
26 it("should set ordered property", function() {\r
27 expect(method.ordered).toBe(true);\r
28 });\r
29 \r
30 it("should return call data", function() {\r
31 var data = method.getCallData(['foo', 'bar', cb, method, opt]);\r
32 \r
33 expect(data).toEqual({\r
34 data: ['foo', 'bar'],\r
35 metadata: undefined,\r
36 callback: cb,\r
37 scope: method,\r
38 options: opt\r
39 });\r
40 });\r
41 });\r
42 \r
43 describe("Named parameters", function() {\r
44 beforeEach(function() {\r
45 makeMethod({\r
46 name: 'bar',\r
47 params: ['foo', 'bar']\r
48 });\r
49 });\r
50 \r
51 it("should instantiate", function() {\r
52 expect(method).toBeDefined();\r
53 });\r
54 \r
55 it("should accept parameter names as array of strings", function() {\r
56 expect(method.params).toEqual({\r
57 foo: true,\r
58 bar: true\r
59 });\r
60 });\r
61 \r
62 it("should accept parameter names as array of objects", function() {\r
63 makeMethod({\r
64 name: 'baz',\r
65 params: [{\r
66 name: 'foo'\r
67 }, {\r
68 name: 'bar'\r
69 }]\r
70 });\r
71 \r
72 expect(method.params).toEqual({\r
73 foo: true,\r
74 bar: true\r
75 });\r
76 });\r
77 \r
78 it("should return call data with less than specified params", function() {\r
79 var data = method.getCallData([{ foo: 'foo' }, cb, method, opt]);\r
80 \r
81 expect(data).toEqual({\r
82 data: {\r
83 foo: 'foo'\r
84 },\r
85 metadata: undefined,\r
86 callback: cb,\r
87 scope: method,\r
88 options: opt\r
89 });\r
90 });\r
91 \r
92 it("should filter out unspecified params", function() {\r
93 makeMethod({\r
94 name: 'baz',\r
95 params: ['foo']\r
96 });\r
97 \r
98 var data = method.getCallData([{ foo: 'bar', bar: 'qux' }, cb, method, opt]);\r
99 \r
100 expect(data).toEqual({\r
101 data: {\r
102 foo: 'bar'\r
103 },\r
104 metadata: undefined,\r
105 callback: cb,\r
106 scope: method,\r
107 options: opt\r
108 });\r
109 });\r
110 \r
111 it("should not filter params with strict: false", function() {\r
112 makeMethod({\r
113 name: 'blerg',\r
114 params: [],\r
115 strict: false\r
116 });\r
117 \r
118 var data = method.getCallData([{ foo: 'bar', qux: 'fred' }, cb, method, opt]);\r
119 \r
120 expect(data).toEqual({\r
121 data: {\r
122 foo: 'bar',\r
123 qux: 'fred'\r
124 },\r
125 metadata: undefined,\r
126 callback: cb,\r
127 scope: method,\r
128 options: opt\r
129 });\r
130 });\r
131 });\r
132 \r
133 describe("metadata", function() {\r
134 describe("declaration", function() {\r
135 var metadata;\r
136 \r
137 describe("ordered meta-params", function() {\r
138 beforeEach(function() {\r
139 makeMethod({\r
140 name: 'metaOrdered',\r
141 len: 0,\r
142 metadata: {\r
143 len: 42\r
144 }\r
145 });\r
146 \r
147 metadata = method.metadata;\r
148 });\r
149 \r
150 it("should define metadata property", function() {\r
151 expect(metadata).toBeDefined();\r
152 });\r
153 \r
154 it("should set metadata.len to 42", function() {\r
155 expect(metadata.len).toBe(42);\r
156 });\r
157 \r
158 it("should not set metadata.params", function() {\r
159 expect(metadata.params).not.toBeDefined();\r
160 });\r
161 \r
162 it("should not set metadata.strict", function() {\r
163 expect(metadata.strict).not.toBeDefined();\r
164 });\r
165 });\r
166 \r
167 describe("named meta-params", function() {\r
168 beforeEach(function() {\r
169 makeMethod({\r
170 name: 'metaNamed',\r
171 len: 0,\r
172 metadata: {\r
173 params: ['foo', 'bar']\r
174 }\r
175 });\r
176 \r
177 metadata = method.metadata;\r
178 });\r
179 \r
180 it("should define metadata property", function() {\r
181 expect(metadata).toBeDefined();\r
182 });\r
183 \r
184 it("should set metadata.params", function() {\r
185 expect(metadata.params).toEqual({ foo: true, bar: true });\r
186 });\r
187 \r
188 it("should set metadata.strict to true", function() {\r
189 expect(metadata.strict).toBe(true);\r
190 });\r
191 \r
192 it("should set metadata.strict to false", function() {\r
193 method = null;\r
194 \r
195 makeMethod({\r
196 name: 'metaNamed2',\r
197 len: 0,\r
198 metadata: {\r
199 params: ['foo', 'bar'],\r
200 strict: false\r
201 }\r
202 });\r
203 \r
204 expect(method.metadata.strict).toBe(false);\r
205 });\r
206 });\r
207 });\r
208 \r
209 describe("getCallData", function() {\r
210 describe("ordered", function() {\r
211 beforeEach(function() {\r
212 makeMethod({\r
213 name: 'metaOrdered',\r
214 len: 1,\r
215 metadata: {\r
216 len: 1\r
217 }\r
218 });\r
219 });\r
220 \r
221 it("should return required number of metadata params", function() {\r
222 var data = method.getCallData([1, cb, null, { metadata: [42] }]);\r
223 \r
224 expect(data).toEqual({\r
225 data: [1],\r
226 metadata: [42],\r
227 callback: cb,\r
228 scope: null,\r
229 options: {}\r
230 });\r
231 });\r
232 \r
233 it("should not return more than len metadata params", function() {\r
234 var data = method.getCallData([1, cb, null, { metadata: [42, 43] }]);\r
235 \r
236 expect(data).toEqual({\r
237 data: [1],\r
238 metadata: [42],\r
239 callback: cb,\r
240 scope: null,\r
241 options: {}\r
242 });\r
243 });\r
244 \r
245 it("should throw exception when there is not enough metadata params", function() {\r
246 spyOn(Ext, 'log');\r
247 \r
248 expect(function() {\r
249 method.getCallData([1, cb, null, { metadata: [] }]);\r
250 }).toThrow("Not enough parameters in options.metadata " +\r
251 "for Ext Direct method metaOrdered");\r
252 });\r
253 });\r
254 \r
255 describe("named strict", function() {\r
256 beforeEach(function() {\r
257 makeMethod({\r
258 name: 'metaNamedStrict',\r
259 len: 0,\r
260 metadata: {\r
261 params: ['foo', 'bar']\r
262 }\r
263 });\r
264 });\r
265 \r
266 it("should return all required metadata params", function() {\r
267 var data = method.getCallData([cb, null, { metadata: { foo: 1, bar: 2 } }]);\r
268 \r
269 expect(data).toEqual({\r
270 data: null,\r
271 metadata: { foo: 1, bar: 2 },\r
272 callback: cb,\r
273 scope: null,\r
274 options: {}\r
275 });\r
276 });\r
277 \r
278 it("should strip non-required metadata params", function() {\r
279 var data = method.getCallData([\r
280 cb, null, { metadata: { foo: 1, bar: 2, baz: 3 } }\r
281 ]);\r
282 \r
283 expect(data).toEqual({\r
284 data: null,\r
285 metadata: { foo: 1, bar: 2 },\r
286 callback: cb,\r
287 scope: null,\r
288 options: {}\r
289 });\r
290 });\r
291 \r
292 it("should throw exception when there is not enough required params", function() {\r
293 spyOn(Ext, 'log');\r
294 \r
295 expect(function() {\r
296 method.getCallData([cb, null, { metadata: { foo: 1 } }]);\r
297 }).toThrow("Named parameter bar is missing in options.metadata " +\r
298 "for Ext Direct method metaNamedStrict");\r
299 });\r
300 });\r
301 \r
302 describe("named non-strict", function() {\r
303 beforeEach(function() {\r
304 makeMethod({\r
305 name: 'metaNamedNonStrict',\r
306 len: 0,\r
307 metadata: {\r
308 params: ['foo'],\r
309 strict: false\r
310 }\r
311 });\r
312 });\r
313 \r
314 it("should return all required metadata params", function() {\r
315 var data = method.getCallData([cb, null, { metadata: { foo: 1 } }]);\r
316 \r
317 expect(data).toEqual({\r
318 data: null,\r
319 metadata: { foo: 1 },\r
320 callback: cb,\r
321 scope: null,\r
322 options: {}\r
323 });\r
324 });\r
325 \r
326 it("should not strip non-required metadata params", function() {\r
327 var data = method.getCallData([cb, null, { metadata: { foo: 1, bar: 2 } }]);\r
328 \r
329 expect(data).toEqual({\r
330 data: null,\r
331 metadata: { foo: 1, bar: 2 },\r
332 callback: cb,\r
333 scope: null,\r
334 options: {}\r
335 });\r
336 });\r
337 \r
338 it("should throw exception when there is not enough required params", function() {\r
339 spyOn(Ext, 'log');\r
340 \r
341 expect(function() {\r
342 method.getCallData([cb, null, { metadata: { bar: 2 } }]);\r
343 }).toThrow("Named parameter foo is missing in options.metadata " +\r
344 "for Ext Direct method metaNamedNonStrict");\r
345 });\r
346 });\r
347 });\r
348 });\r
349});\r