1 | const Mixpanel = require('../lib/mixpanel-node');
|
2 | const Sinon = require('sinon');
|
3 | const {create_profile_helpers} = require('../lib/profile_helpers');
|
4 |
|
5 |
|
6 | const test_send_request_args = function(test, func, {args, expected, use_modifiers, use_callback} = {}) {
|
7 | let expected_data = {$token: this.token, $distinct_id: this.distinct_id, ...expected};
|
8 | let callback;
|
9 |
|
10 | args = [this.distinct_id, ...(args ? args : [])];
|
11 |
|
12 | if (use_modifiers) {
|
13 | var modifiers = {
|
14 | '$ignore_alias': true,
|
15 | '$ignore_time': true,
|
16 | '$ip': '1.2.3.4',
|
17 | '$time': 1234567890,
|
18 | '$latitude': 40.7127753,
|
19 | '$longitude': -74.0059728,
|
20 | };
|
21 | Object.assign(expected_data, modifiers);
|
22 | args.push(modifiers);
|
23 | }
|
24 | if (use_callback) {
|
25 | callback = function() {};
|
26 | args.push(callback);
|
27 | }
|
28 |
|
29 | this.mixpanel.people[func](...args);
|
30 |
|
31 | const expectedSendRequestArgs = [{ method: 'GET', endpoint: this.endpoint, data: expected_data }];
|
32 | test.ok(
|
33 | this.send_request.calledWithMatch(...expectedSendRequestArgs),
|
34 | `people.${func} didn't call send_request with correct arguments
|
35 | Actual arguments: ${JSON.stringify(this.send_request.getCall(0).args)}
|
36 | expected to include: ${JSON.stringify(expectedSendRequestArgs)}`
|
37 | );
|
38 | if (use_callback) {
|
39 | test.ok(
|
40 | this.send_request.args[0][1] === callback,
|
41 | `people.${func} didn't call send_request with a callback`
|
42 | );
|
43 | }
|
44 | test.done();
|
45 | };
|
46 |
|
47 | exports.people = {
|
48 | setUp: function(next) {
|
49 | this.endpoint = '/engage';
|
50 | this.distinct_id = 'user1';
|
51 | this.token = 'token';
|
52 |
|
53 | this.send_request = Sinon.stub();
|
54 |
|
55 | this.mixpanel = Mixpanel.init(this.token);
|
56 | this.mixpanel.send_request = this.send_request
|
57 |
|
58 | this.test_send_request_args = test_send_request_args;
|
59 |
|
60 | next();
|
61 | },
|
62 |
|
63 | tearDown: function(next) {
|
64 | next();
|
65 | },
|
66 |
|
67 | _set: {
|
68 | "handles set_once correctly": function(test){
|
69 | this.test_send_request_args(test, 'set_once', {
|
70 | args: ['key1', 'val1'],
|
71 | expected: {$set_once: {'key1': 'val1'}},
|
72 | });
|
73 | },
|
74 |
|
75 | "calls send_request with correct endpoint and data": function(test) {
|
76 | this.test_send_request_args(test, 'set', {
|
77 | args: ['key1', 'val1'],
|
78 | expected: {$set: {'key1': 'val1'}},
|
79 | });
|
80 | },
|
81 |
|
82 | "supports being called with a property object": function(test) {
|
83 | this.test_send_request_args(test, 'set', {
|
84 | args: [{'key1': 'val1', 'key2': 'val2'}],
|
85 | expected: {$set: {'key1': 'val1', 'key2': 'val2'}},
|
86 | });
|
87 | },
|
88 |
|
89 | "supports being called with a property object (set_once)": function(test) {
|
90 | this.test_send_request_args(test, 'set_once', {
|
91 | args: [{'key1': 'val1', 'key2': 'val2'}],
|
92 | expected: {$set_once: {'key1': 'val1', 'key2': 'val2'}},
|
93 | });
|
94 | },
|
95 |
|
96 | "supports being called with a modifiers argument": function(test) {
|
97 | this.test_send_request_args(test, 'set', {
|
98 | args: ['key1', 'val1'],
|
99 | expected: {$set: {'key1': 'val1'}},
|
100 | use_modifiers: true,
|
101 | });
|
102 | },
|
103 |
|
104 | "supports being called with a modifiers argument (set_once)": function(test) {
|
105 | this.test_send_request_args(test, 'set_once', {
|
106 | args: ['key1', 'val1'],
|
107 | expected: {$set_once: {'key1': 'val1'}},
|
108 | use_modifiers: true,
|
109 | });
|
110 | },
|
111 |
|
112 | "supports being called with a properties object and a modifiers argument": function(test) {
|
113 | this.test_send_request_args(test, 'set', {
|
114 | args: [{'key1': 'val1', 'key2': 'val2'}],
|
115 | expected: {$set: {'key1': 'val1', 'key2': 'val2'}},
|
116 | use_modifiers: true,
|
117 | });
|
118 | },
|
119 |
|
120 | "supports being called with a properties object and a modifiers argument (set_once)": function(test) {
|
121 | this.test_send_request_args(test, 'set_once', {
|
122 | args: [{'key1': 'val1', 'key2': 'val2'}],
|
123 | expected: {$set_once: {'key1': 'val1', 'key2': 'val2'}},
|
124 | use_modifiers: true,
|
125 | });
|
126 | },
|
127 |
|
128 | "handles the ip property in a property object properly": function(test) {
|
129 | this.test_send_request_args(test, 'set', {
|
130 | args: [{'ip': '1.2.3.4', 'key1': 'val1', 'key2': 'val2'}],
|
131 | expected: {
|
132 | $ip: '1.2.3.4',
|
133 | $set: {'key1': 'val1', 'key2': 'val2'},
|
134 | },
|
135 | });
|
136 | },
|
137 |
|
138 | "handles the $ignore_time property in a property object properly": function(test) {
|
139 | this.test_send_request_args(test, 'set', {
|
140 | args: [{'$ignore_time': true, 'key1': 'val1', 'key2': 'val2'}],
|
141 | expected: {
|
142 | $ignore_time: true,
|
143 | $set: {'key1': 'val1', 'key2': 'val2'},
|
144 | },
|
145 | });
|
146 | },
|
147 |
|
148 | "supports being called with a callback": function(test) {
|
149 | this.test_send_request_args(test, 'set', {
|
150 | args: ['key1', 'val1'],
|
151 | expected: {$set: {'key1': 'val1'}},
|
152 | use_callback: true,
|
153 | });
|
154 | },
|
155 |
|
156 | "supports being called with a callback (set_once)": function(test) {
|
157 | this.test_send_request_args(test, 'set_once', {
|
158 | args: ['key1', 'val1'],
|
159 | expected: {$set_once: {'key1': 'val1'}},
|
160 | use_callback: true,
|
161 | });
|
162 | },
|
163 |
|
164 | "supports being called with a properties object and a callback": function(test) {
|
165 | this.test_send_request_args(test, 'set', {
|
166 | args: [{'key1': 'val1', 'key2': 'val2'}],
|
167 | expected: {$set: {'key1': 'val1', 'key2': 'val2'}},
|
168 | use_callback: true,
|
169 | });
|
170 | },
|
171 |
|
172 | "supports being called with a properties object and a callback (set_once)": function(test) {
|
173 | this.test_send_request_args(test, 'set_once', {
|
174 | args: [{'key1': 'val1', 'key2': 'val2'}],
|
175 | expected: {$set_once: {'key1': 'val1', 'key2': 'val2'}},
|
176 | use_callback: true,
|
177 | });
|
178 | },
|
179 |
|
180 | "supports being called with a modifiers argument and a callback": function(test) {
|
181 | this.test_send_request_args(test, 'set', {
|
182 | args: ['key1', 'val1'],
|
183 | expected: {$set: {'key1': 'val1'}},
|
184 | use_callback: true,
|
185 | use_modifiers: true,
|
186 | });
|
187 | },
|
188 |
|
189 | "supports being called with a modifiers argument and a callback (set_once)": function(test) {
|
190 | this.test_send_request_args(test, 'set_once', {
|
191 | args: ['key1', 'val1'],
|
192 | expected: {$set_once: {'key1': 'val1'}},
|
193 | use_callback: true,
|
194 | use_modifiers: true,
|
195 | });
|
196 | },
|
197 |
|
198 | "supports being called with a properties object, a modifiers argument and a callback": function(test) {
|
199 | this.test_send_request_args(test, 'set', {
|
200 | args: [{'key1': 'val1', 'key2': 'val2'}],
|
201 | expected: {$set: {'key1': 'val1', 'key2': 'val2'}},
|
202 | use_callback: true,
|
203 | use_modifiers: true,
|
204 | });
|
205 | },
|
206 |
|
207 | "supports being called with a properties object, a modifiers argument and a callback (set_once)": function(test) {
|
208 | this.test_send_request_args(test, 'set_once', {
|
209 | args: [{'key1': 'val1', 'key2': 'val2'}],
|
210 | expected: {$set_once: {'key1': 'val1', 'key2': 'val2'}},
|
211 | use_callback: true,
|
212 | use_modifiers: true,
|
213 | });
|
214 | },
|
215 | },
|
216 |
|
217 | increment: {
|
218 | "calls send_request with correct endpoint and data": function(test) {
|
219 | this.test_send_request_args(test, 'increment', {
|
220 | args: ['key1'],
|
221 | expected: {$add: {'key1': 1}},
|
222 | });
|
223 | },
|
224 |
|
225 | "supports incrementing key by value": function(test) {
|
226 | this.test_send_request_args(test, 'increment', {
|
227 | args: ['key1', 2],
|
228 | expected: {$add: {'key1': 2}},
|
229 | });
|
230 | },
|
231 |
|
232 | "supports incrementing key by value and a modifiers argument": function(test) {
|
233 | this.test_send_request_args(test, 'increment', {
|
234 | args: ['key1', 2],
|
235 | expected: {$add: {'key1': 2}},
|
236 | use_modifiers: true,
|
237 | });
|
238 | },
|
239 |
|
240 | "supports incrementing multiple keys": function(test) {
|
241 | this.test_send_request_args(test, 'increment', {
|
242 | args: [{'key1': 5, 'key2': -3}],
|
243 | expected: {$add: {'key1': 5, 'key2': -3}},
|
244 | });
|
245 | },
|
246 |
|
247 | "supports incrementing multiple keys and a modifiers argument": function(test) {
|
248 | this.test_send_request_args(test, 'increment', {
|
249 | args: [{'key1': 5, 'key2': -3}],
|
250 | expected: {$add: {'key1': 5, 'key2': -3}},
|
251 | use_modifiers: true,
|
252 | });
|
253 | },
|
254 |
|
255 | "ignores invalid values": function(test) {
|
256 | this.test_send_request_args(test, 'increment', {
|
257 | args: [{
|
258 | 'key1': 'bad',
|
259 | 'key2': 3,
|
260 | 'key3': undefined,
|
261 | 'key4': '5',
|
262 | 'key5': new Date(),
|
263 | 'key6': function() {},
|
264 | }],
|
265 | expected: {$add: {'key2': 3, 'key4': '5'}},
|
266 | });
|
267 | },
|
268 |
|
269 | "supports being called with a callback": function(test) {
|
270 | this.test_send_request_args(test, 'increment', {
|
271 | args: ['key1'],
|
272 | expected: {$add: {'key1': 1}},
|
273 | use_callback: true,
|
274 | });
|
275 | },
|
276 |
|
277 | "supports incrementing key by value with a callback": function(test) {
|
278 | this.test_send_request_args(test, 'increment', {
|
279 | args: ['key1', 2],
|
280 | expected: {$add: {'key1': 2}},
|
281 | use_callback: true,
|
282 | });
|
283 | },
|
284 |
|
285 | "supports incrementing key by value with a modifiers argument and callback": function(test) {
|
286 | this.test_send_request_args(test, 'increment', {
|
287 | args: ['key1', 2],
|
288 | expected: {$add: {'key1': 2}},
|
289 | use_callback: true,
|
290 | use_modifiers: true,
|
291 | });
|
292 | },
|
293 |
|
294 | "supports incrementing multiple keys with a callback": function(test) {
|
295 | this.test_send_request_args(test, 'increment', {
|
296 | args: [{'key1': 5, 'key2': -3}],
|
297 | expected: {$add: {'key1': 5, 'key2': -3}},
|
298 | use_callback: true,
|
299 | });
|
300 | },
|
301 |
|
302 | "supports incrementing multiple keys with a modifiers argument and callback": function(test) {
|
303 | this.test_send_request_args(test, 'increment', {
|
304 | args: [{'key1': 5, 'key2': -3}],
|
305 | expected: {$add: {'key1': 5, 'key2': -3}},
|
306 | use_callback: true,
|
307 | use_modifiers: true,
|
308 | });
|
309 | },
|
310 | },
|
311 |
|
312 | append: {
|
313 | "calls send_request with correct endpoint and data": function(test) {
|
314 | this.test_send_request_args(test, 'append', {
|
315 | args: ['key1', 'value'],
|
316 | expected: {$append: {'key1': 'value'}},
|
317 | });
|
318 | },
|
319 |
|
320 | "supports being called with modifiers": function(test) {
|
321 | this.test_send_request_args(test, 'append', {
|
322 | args: ['key1', 'value'],
|
323 | expected: {$append: {'key1': 'value'}},
|
324 | use_modifiers: true,
|
325 | });
|
326 | },
|
327 |
|
328 | "supports being called with a callback": function(test) {
|
329 | this.test_send_request_args(test, 'append', {
|
330 | args: ['key1', 'value'],
|
331 | expected: {$append: {'key1': 'value'}},
|
332 | use_callback: true,
|
333 | });
|
334 | },
|
335 |
|
336 | "supports appending multiple keys with values": function(test) {
|
337 | this.test_send_request_args(test, 'append', {
|
338 | args: [{'key1': 'value1', 'key2': 'value2'}],
|
339 | expected: {$append: {'key1': 'value1', 'key2': 'value2'}},
|
340 | });
|
341 | },
|
342 |
|
343 | "supports appending multiple keys with values and a modifiers argument": function(test) {
|
344 | this.test_send_request_args(test, 'append', {
|
345 | args: [{'key1': 'value1', 'key2': 'value2'}],
|
346 | expected: {$append: {'key1': 'value1', 'key2': 'value2'}},
|
347 | use_modifiers: true,
|
348 | });
|
349 | },
|
350 |
|
351 | "supports appending multiple keys with values and a callback": function(test) {
|
352 | this.test_send_request_args(test, 'append', {
|
353 | args: [{'key1': 'value1', 'key2': 'value2'}],
|
354 | expected: {$append: {'key1': 'value1', 'key2': 'value2'}},
|
355 | use_callback: true,
|
356 | });
|
357 | },
|
358 |
|
359 | "supports appending multiple keys with values with a modifiers argument and callback": function(test) {
|
360 | this.test_send_request_args(test, 'append', {
|
361 | args: [{'key1': 'value1', 'key2': 'value2'}],
|
362 | expected: {$append: {'key1': 'value1', 'key2': 'value2'}},
|
363 | use_callback: true,
|
364 | use_modifiers: true,
|
365 | });
|
366 | },
|
367 | },
|
368 |
|
369 | track_charge: {
|
370 | "calls send_request with correct endpoint and data": function(test) {
|
371 | this.test_send_request_args(test, 'track_charge', {
|
372 | args: [50],
|
373 | expected: {$append: {$transactions: {$amount: 50}}},
|
374 | });
|
375 | },
|
376 |
|
377 | "supports being called with a property object": function(test) {
|
378 | var time = new Date('Feb 1 2012');
|
379 | this.test_send_request_args(test, 'track_charge', {
|
380 | args: [50, {$time: time, isk: 'isk'}],
|
381 | expected: {$append: {$transactions: {
|
382 | $amount: 50,
|
383 | $time: time.toISOString(),
|
384 | isk: 'isk',
|
385 | }}},
|
386 | });
|
387 | },
|
388 |
|
389 | "supports being called with a modifiers argument": function(test) {
|
390 | this.test_send_request_args(test, 'track_charge', {
|
391 | args: [50],
|
392 | expected: {$append: {$transactions: {$amount: 50}}},
|
393 | use_modifiers: true,
|
394 | });
|
395 | },
|
396 |
|
397 | "supports being called with a property object and a modifiers argument": function(test) {
|
398 | var time = new Date('Feb 1 2012');
|
399 | this.test_send_request_args(test, 'track_charge', {
|
400 | args: [50, {$time: time, isk: 'isk'}],
|
401 | expected: {$append: {$transactions: {
|
402 | $amount: 50,
|
403 | $time: time.toISOString(),
|
404 | isk: 'isk',
|
405 | }}},
|
406 | use_modifiers: true,
|
407 | });
|
408 | },
|
409 |
|
410 | "supports being called with a callback": function(test) {
|
411 | this.test_send_request_args(test, 'track_charge', {
|
412 | args: [50],
|
413 | expected: {$append: {$transactions: {$amount: 50}}},
|
414 | use_callback: true,
|
415 | });
|
416 | },
|
417 |
|
418 | "supports being called with properties and a callback": function(test) {
|
419 | this.test_send_request_args(test, 'track_charge', {
|
420 | args: [50, {}],
|
421 | expected: {$append: {$transactions: {$amount: 50}}},
|
422 | use_callback: true,
|
423 | });
|
424 | },
|
425 |
|
426 | "supports being called with modifiers and a callback": function(test) {
|
427 | this.test_send_request_args(test, 'track_charge', {
|
428 | args: [50],
|
429 | expected: {$append: {$transactions: {$amount: 50}}},
|
430 | use_callback: true,
|
431 | use_modifiers: true,
|
432 | });
|
433 | },
|
434 |
|
435 | "supports being called with properties, modifiers and a callback": function(test) {
|
436 | var time = new Date('Feb 1 2012');
|
437 | this.test_send_request_args(test, 'track_charge', {
|
438 | args: [50, {$time: time, isk: 'isk'}],
|
439 | expected: {$append: {$transactions: {
|
440 | $amount: 50,
|
441 | $time: time.toISOString(),
|
442 | isk: 'isk',
|
443 | }}},
|
444 | use_callback: true,
|
445 | use_modifiers: true,
|
446 | });
|
447 | },
|
448 | },
|
449 |
|
450 | clear_charges: {
|
451 | "calls send_request with correct endpoint and data": function(test) {
|
452 | this.test_send_request_args(test, 'clear_charges', {
|
453 | expected: {$set: {$transactions: []}},
|
454 | });
|
455 | },
|
456 |
|
457 | "supports being called with a modifiers argument": function(test) {
|
458 | this.test_send_request_args(test, 'clear_charges', {
|
459 | expected: {$set: {$transactions: []}},
|
460 | use_modifiers: true,
|
461 | });
|
462 | },
|
463 |
|
464 | "supports being called with a callback": function(test) {
|
465 | this.test_send_request_args(test, 'clear_charges', {
|
466 | expected: {$set: {$transactions: []}},
|
467 | use_callback: true,
|
468 | });
|
469 | },
|
470 |
|
471 | "supports being called with a modifiers argument and a callback": function(test) {
|
472 | this.test_send_request_args(test, 'clear_charges', {
|
473 | expected: {$set: {$transactions: []}},
|
474 | use_callback: true,
|
475 | use_modifiers: true,
|
476 | });
|
477 | },
|
478 | },
|
479 |
|
480 | delete_user: {
|
481 | "calls send_request with correct endpoint and data": function(test) {
|
482 | this.test_send_request_args(test, 'delete_user', {
|
483 | expected: {$delete: ''},
|
484 | });
|
485 | },
|
486 |
|
487 | "supports being called with a modifiers argument": function(test) {
|
488 | this.test_send_request_args(test, 'delete_user', {
|
489 | expected: {$delete: ''},
|
490 | use_modifiers: true,
|
491 | });
|
492 | },
|
493 |
|
494 | "supports being called with a callback": function(test) {
|
495 | this.test_send_request_args(test, 'delete_user', {
|
496 | expected: {$delete: ''},
|
497 | use_callback: true,
|
498 | });
|
499 | },
|
500 |
|
501 | "supports being called with a modifiers argument and a callback": function(test) {
|
502 | this.test_send_request_args(test, 'delete_user', {
|
503 | expected: {$delete: ''},
|
504 | use_callback: true,
|
505 | use_modifiers: true,
|
506 | });
|
507 | },
|
508 | },
|
509 |
|
510 | remove: {
|
511 | "calls send_request with correct endpoint and data": function(test) {
|
512 | this.test_send_request_args(test, 'remove', {
|
513 | args: [{'key1': 'value1', 'key2': 'value2'}],
|
514 | expected: {$remove: {'key1': 'value1', 'key2': 'value2'}},
|
515 | });
|
516 | },
|
517 |
|
518 | "errors on non-scalar argument types": function(test) {
|
519 | this.mixpanel.people.remove(this.distinct_id, {'key1': ['value1']});
|
520 | this.mixpanel.people.remove(this.distinct_id, {key1: {key: 'val'}});
|
521 | this.mixpanel.people.remove(this.distinct_id, 1231241.123);
|
522 | this.mixpanel.people.remove(this.distinct_id, [5]);
|
523 | this.mixpanel.people.remove(this.distinct_id, {key1: function() {}});
|
524 | this.mixpanel.people.remove(this.distinct_id, {key1: [function() {}]});
|
525 |
|
526 | test.ok(
|
527 | !this.mixpanel.send_request.called,
|
528 | "people.remove shouldn't call send_request on invalid arguments"
|
529 | );
|
530 | test.done();
|
531 | },
|
532 |
|
533 | "supports being called with a modifiers argument": function(test) {
|
534 | this.test_send_request_args(test, 'remove', {
|
535 | args: [{'key1': 'value1'}],
|
536 | expected: {$remove: {'key1': 'value1'}},
|
537 | use_modifiers: true,
|
538 | });
|
539 | },
|
540 |
|
541 | "supports being called with a callback": function(test) {
|
542 | this.test_send_request_args(test, 'remove', {
|
543 | args: [{'key1': 'value1'}],
|
544 | expected: {$remove: {'key1': 'value1'}},
|
545 | use_callback: true,
|
546 | });
|
547 | },
|
548 |
|
549 | "supports being called with a modifiers argument and a callback": function(test) {
|
550 | this.test_send_request_args(test, 'remove', {
|
551 | args: [{'key1': 'value1'}],
|
552 | expected: {$remove: {'key1': 'value1'}},
|
553 | use_callback: true,
|
554 | use_modifiers: true,
|
555 | });
|
556 | },
|
557 | },
|
558 |
|
559 | union: {
|
560 | "calls send_request with correct endpoint and data": function(test) {
|
561 | this.test_send_request_args(test, 'union', {
|
562 | args: [{'key1': ['value1', 'value2']}],
|
563 | expected: {$union: {'key1': ['value1', 'value2']}},
|
564 | });
|
565 | },
|
566 |
|
567 | "supports being called with a scalar value": function(test) {
|
568 | this.test_send_request_args(test, 'union', {
|
569 | args: [{'key1': 'value1'}],
|
570 | expected: {$union: {'key1': ['value1']}},
|
571 | });
|
572 | },
|
573 |
|
574 | "errors on other argument types": function(test) {
|
575 | this.mixpanel.people.union(this.distinct_id, {key1: {key: 'val'}});
|
576 | this.mixpanel.people.union(this.distinct_id, 1231241.123);
|
577 | this.mixpanel.people.union(this.distinct_id, [5]);
|
578 | this.mixpanel.people.union(this.distinct_id, {key1: function() {}});
|
579 | this.mixpanel.people.union(this.distinct_id, {key1: [function() {}]});
|
580 |
|
581 | test.ok(
|
582 | !this.mixpanel.send_request.called,
|
583 | "people.union shouldn't call send_request on invalid arguments"
|
584 | );
|
585 | test.done();
|
586 | },
|
587 |
|
588 | "supports being called with a modifiers argument": function(test) {
|
589 | this.test_send_request_args(test, 'union', {
|
590 | args: [{'key1': ['value1', 'value2']}],
|
591 | expected: {$union: {'key1': ['value1', 'value2']}},
|
592 | use_modifiers: true,
|
593 | });
|
594 | },
|
595 |
|
596 | "supports being called with a callback": function(test) {
|
597 | this.test_send_request_args(test, 'union', {
|
598 | args: [{'key1': ['value1', 'value2']}],
|
599 | expected: {$union: {'key1': ['value1', 'value2']}},
|
600 | use_callback: true,
|
601 | });
|
602 | },
|
603 |
|
604 | "supports being called with a modifiers argument and a callback": function(test) {
|
605 | this.test_send_request_args(test, 'union', {
|
606 | args: [{'key1': ['value1', 'value2']}],
|
607 | expected: {$union: {'key1': ['value1', 'value2']}},
|
608 | use_callback: true,
|
609 | use_modifiers: true,
|
610 | });
|
611 | },
|
612 | },
|
613 |
|
614 | unset: {
|
615 | "calls send_request with correct endpoint and data": function(test) {
|
616 | this.test_send_request_args(test, 'unset', {
|
617 | args: ['key1'],
|
618 | expected: {$unset: ['key1']},
|
619 | });
|
620 | },
|
621 |
|
622 | "supports being called with a property array": function(test) {
|
623 | this.test_send_request_args(test, 'unset', {
|
624 | args: [['key1', 'key2']],
|
625 | expected: {$unset: ['key1', 'key2']},
|
626 | });
|
627 | },
|
628 |
|
629 | "errors on other argument types": function(test) {
|
630 | this.mixpanel.people.unset(this.distinct_id, { key1:'val1', key2:'val2' });
|
631 | this.mixpanel.people.unset(this.distinct_id, 1231241.123);
|
632 |
|
633 | test.ok(
|
634 | !this.mixpanel.send_request.called,
|
635 | "people.unset shouldn't call send_request on invalid arguments"
|
636 | );
|
637 | test.done();
|
638 | },
|
639 |
|
640 | "supports being called with a modifiers argument": function(test) {
|
641 | this.test_send_request_args(test, 'unset', {
|
642 | args: ['key1'],
|
643 | expected: {$unset: ['key1']},
|
644 | use_modifiers: true,
|
645 | });
|
646 | },
|
647 |
|
648 | "supports being called with a callback": function(test) {
|
649 | this.test_send_request_args(test, 'unset', {
|
650 | args: ['key1'],
|
651 | expected: {$unset: ['key1']},
|
652 | use_callback: true,
|
653 | });
|
654 | },
|
655 |
|
656 | "supports being called with a modifiers argument and a callback": function(test) {
|
657 | this.test_send_request_args(test, 'unset', {
|
658 | args: ['key1'],
|
659 | expected: {$unset: ['key1']},
|
660 | use_callback: true,
|
661 | use_modifiers: true,
|
662 | });
|
663 | },
|
664 | },
|
665 | };
|