nativescript 9.1.0-alpha.5 → 9.1.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/common/mobile/android/android-emulator-services.js +11 -3
- package/node_modules/debug/LICENSE +20 -0
- package/node_modules/debug/README.md +481 -0
- package/node_modules/debug/package.json +64 -0
- package/node_modules/debug/src/browser.js +272 -0
- package/node_modules/debug/src/common.js +292 -0
- package/node_modules/debug/src/index.js +10 -0
- package/node_modules/debug/src/node.js +263 -0
- package/node_modules/ms/index.js +162 -0
- package/node_modules/ms/license.md +21 -0
- package/node_modules/ms/package.json +38 -0
- package/node_modules/ms/readme.md +59 -0
- package/node_modules/universal-analytics/.travis.yml +11 -0
- package/node_modules/universal-analytics/AcceptableParams.md +757 -0
- package/node_modules/universal-analytics/HISTORY.md +170 -0
- package/node_modules/universal-analytics/Makefile +5 -0
- package/node_modules/universal-analytics/README.md +651 -0
- package/node_modules/universal-analytics/index.js +2 -0
- package/node_modules/universal-analytics/lib/config.js +171 -0
- package/node_modules/universal-analytics/lib/index.js +563 -0
- package/node_modules/universal-analytics/lib/request.js +73 -0
- package/node_modules/universal-analytics/lib/utils.js +29 -0
- package/node_modules/universal-analytics/package.json +33 -0
- package/node_modules/universal-analytics/test/_enqueue.js +144 -0
- package/node_modules/universal-analytics/test/event.js +346 -0
- package/node_modules/universal-analytics/test/exception.js +233 -0
- package/node_modules/universal-analytics/test/index.js +141 -0
- package/node_modules/universal-analytics/test/item.js +550 -0
- package/node_modules/universal-analytics/test/middleware.js +119 -0
- package/node_modules/universal-analytics/test/mocha.opts +3 -0
- package/node_modules/universal-analytics/test/pageview.js +286 -0
- package/node_modules/universal-analytics/test/send.js +232 -0
- package/node_modules/universal-analytics/test/set.js +68 -0
- package/node_modules/universal-analytics/test/timing.js +363 -0
- package/node_modules/universal-analytics/test/transaction.js +371 -0
- package/node_modules/uuid/LICENSE.md +9 -0
- package/node_modules/uuid/README.md +510 -0
- package/node_modules/uuid/dist/cjs/index.d.ts +15 -0
- package/node_modules/uuid/dist/cjs/index.js +31 -0
- package/node_modules/uuid/dist/cjs/max.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/max.js +3 -0
- package/node_modules/uuid/dist/cjs/md5.d.ts +4 -0
- package/node_modules/uuid/dist/cjs/md5.js +13 -0
- package/node_modules/uuid/dist/cjs/native.d.ts +6 -0
- package/node_modules/uuid/dist/cjs/native.js +4 -0
- package/node_modules/uuid/dist/cjs/nil.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/nil.js +3 -0
- package/node_modules/uuid/dist/cjs/package.json +1 -0
- package/node_modules/uuid/dist/cjs/parse.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/parse.js +11 -0
- package/node_modules/uuid/dist/cjs/regex.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/regex.js +3 -0
- package/node_modules/uuid/dist/cjs/rng.d.ts +1 -0
- package/node_modules/uuid/dist/cjs/rng.js +13 -0
- package/node_modules/uuid/dist/cjs/sha1.d.ts +4 -0
- package/node_modules/uuid/dist/cjs/sha1.js +13 -0
- package/node_modules/uuid/dist/cjs/stringify.d.ts +3 -0
- package/node_modules/uuid/dist/cjs/stringify.js +39 -0
- package/node_modules/uuid/dist/cjs/types.d.ts +21 -0
- package/node_modules/uuid/dist/cjs/types.js +2 -0
- package/node_modules/uuid/dist/cjs/uuid-bin.d.ts +1 -0
- package/node_modules/uuid/dist/cjs/uuid-bin.js +72 -0
- package/node_modules/uuid/dist/cjs/v1.d.ts +11 -0
- package/node_modules/uuid/dist/cjs/v1.js +87 -0
- package/node_modules/uuid/dist/cjs/v1ToV6.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/v1ToV6.js +13 -0
- package/node_modules/uuid/dist/cjs/v3.d.ts +9 -0
- package/node_modules/uuid/dist/cjs/v3.js +14 -0
- package/node_modules/uuid/dist/cjs/v35.d.ts +7 -0
- package/node_modules/uuid/dist/cjs/v35.js +41 -0
- package/node_modules/uuid/dist/cjs/v4.d.ts +4 -0
- package/node_modules/uuid/dist/cjs/v4.js +29 -0
- package/node_modules/uuid/dist/cjs/v5.d.ts +9 -0
- package/node_modules/uuid/dist/cjs/v5.js +14 -0
- package/node_modules/uuid/dist/cjs/v6.d.ts +4 -0
- package/node_modules/uuid/dist/cjs/v6.js +19 -0
- package/node_modules/uuid/dist/cjs/v6ToV1.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/v6ToV1.js +13 -0
- package/node_modules/uuid/dist/cjs/v7.d.ts +9 -0
- package/node_modules/uuid/dist/cjs/v7.js +69 -0
- package/node_modules/uuid/dist/cjs/validate.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/validate.js +7 -0
- package/node_modules/uuid/dist/cjs/version.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/version.js +10 -0
- package/node_modules/uuid/dist/cjs-browser/index.d.ts +15 -0
- package/node_modules/uuid/dist/cjs-browser/index.js +31 -0
- package/node_modules/uuid/dist/cjs-browser/max.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/max.js +3 -0
- package/node_modules/uuid/dist/cjs-browser/md5.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/md5.js +137 -0
- package/node_modules/uuid/dist/cjs-browser/native.d.ts +4 -0
- package/node_modules/uuid/dist/cjs-browser/native.js +4 -0
- package/node_modules/uuid/dist/cjs-browser/nil.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/nil.js +3 -0
- package/node_modules/uuid/dist/cjs-browser/package.json +1 -0
- package/node_modules/uuid/dist/cjs-browser/parse.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/parse.js +11 -0
- package/node_modules/uuid/dist/cjs-browser/regex.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/regex.js +3 -0
- package/node_modules/uuid/dist/cjs-browser/rng.d.ts +1 -0
- package/node_modules/uuid/dist/cjs-browser/rng.js +14 -0
- package/node_modules/uuid/dist/cjs-browser/sha1.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/sha1.js +72 -0
- package/node_modules/uuid/dist/cjs-browser/stringify.d.ts +3 -0
- package/node_modules/uuid/dist/cjs-browser/stringify.js +39 -0
- package/node_modules/uuid/dist/cjs-browser/types.d.ts +21 -0
- package/node_modules/uuid/dist/cjs-browser/types.js +2 -0
- package/node_modules/uuid/dist/cjs-browser/uuid-bin.d.ts +1 -0
- package/node_modules/uuid/dist/cjs-browser/uuid-bin.js +72 -0
- package/node_modules/uuid/dist/cjs-browser/v1.d.ts +11 -0
- package/node_modules/uuid/dist/cjs-browser/v1.js +87 -0
- package/node_modules/uuid/dist/cjs-browser/v1ToV6.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/v1ToV6.js +13 -0
- package/node_modules/uuid/dist/cjs-browser/v3.d.ts +9 -0
- package/node_modules/uuid/dist/cjs-browser/v3.js +14 -0
- package/node_modules/uuid/dist/cjs-browser/v35.d.ts +7 -0
- package/node_modules/uuid/dist/cjs-browser/v35.js +41 -0
- package/node_modules/uuid/dist/cjs-browser/v4.d.ts +4 -0
- package/node_modules/uuid/dist/cjs-browser/v4.js +29 -0
- package/node_modules/uuid/dist/cjs-browser/v5.d.ts +9 -0
- package/node_modules/uuid/dist/cjs-browser/v5.js +14 -0
- package/node_modules/uuid/dist/cjs-browser/v6.d.ts +4 -0
- package/node_modules/uuid/dist/cjs-browser/v6.js +19 -0
- package/node_modules/uuid/dist/cjs-browser/v6ToV1.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/v6ToV1.js +13 -0
- package/node_modules/uuid/dist/cjs-browser/v7.d.ts +9 -0
- package/node_modules/uuid/dist/cjs-browser/v7.js +69 -0
- package/node_modules/uuid/dist/cjs-browser/validate.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/validate.js +7 -0
- package/node_modules/uuid/dist/cjs-browser/version.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/version.js +10 -0
- package/node_modules/uuid/dist/esm/bin/uuid +2 -0
- package/node_modules/uuid/dist/esm/index.d.ts +15 -0
- package/node_modules/uuid/dist/esm/index.js +14 -0
- package/node_modules/uuid/dist/esm/max.d.ts +2 -0
- package/node_modules/uuid/dist/esm/max.js +1 -0
- package/node_modules/uuid/dist/esm/md5.d.ts +4 -0
- package/node_modules/uuid/dist/esm/md5.js +11 -0
- package/node_modules/uuid/dist/esm/native.d.ts +6 -0
- package/node_modules/uuid/dist/esm/native.js +2 -0
- package/node_modules/uuid/dist/esm/nil.d.ts +2 -0
- package/node_modules/uuid/dist/esm/nil.js +1 -0
- package/node_modules/uuid/dist/esm/parse.d.ts +2 -0
- package/node_modules/uuid/dist/esm/parse.js +9 -0
- package/node_modules/uuid/dist/esm/regex.d.ts +2 -0
- package/node_modules/uuid/dist/esm/regex.js +1 -0
- package/node_modules/uuid/dist/esm/rng.d.ts +1 -0
- package/node_modules/uuid/dist/esm/rng.js +10 -0
- package/node_modules/uuid/dist/esm/sha1.d.ts +4 -0
- package/node_modules/uuid/dist/esm/sha1.js +11 -0
- package/node_modules/uuid/dist/esm/stringify.d.ts +3 -0
- package/node_modules/uuid/dist/esm/stringify.js +35 -0
- package/node_modules/uuid/dist/esm/types.d.ts +21 -0
- package/node_modules/uuid/dist/esm/types.js +1 -0
- package/node_modules/uuid/dist/esm/uuid-bin.d.ts +1 -0
- package/node_modules/uuid/dist/esm/uuid-bin.js +70 -0
- package/node_modules/uuid/dist/esm/v1.d.ts +11 -0
- package/node_modules/uuid/dist/esm/v1.js +83 -0
- package/node_modules/uuid/dist/esm/v1ToV6.d.ts +2 -0
- package/node_modules/uuid/dist/esm/v1ToV6.js +10 -0
- package/node_modules/uuid/dist/esm/v3.d.ts +9 -0
- package/node_modules/uuid/dist/esm/v3.js +9 -0
- package/node_modules/uuid/dist/esm/v35.d.ts +7 -0
- package/node_modules/uuid/dist/esm/v35.js +36 -0
- package/node_modules/uuid/dist/esm/v4.d.ts +4 -0
- package/node_modules/uuid/dist/esm/v4.js +27 -0
- package/node_modules/uuid/dist/esm/v5.d.ts +9 -0
- package/node_modules/uuid/dist/esm/v5.js +9 -0
- package/node_modules/uuid/dist/esm/v6.d.ts +4 -0
- package/node_modules/uuid/dist/esm/v6.js +17 -0
- package/node_modules/uuid/dist/esm/v6ToV1.d.ts +2 -0
- package/node_modules/uuid/dist/esm/v6ToV1.js +10 -0
- package/node_modules/uuid/dist/esm/v7.d.ts +9 -0
- package/node_modules/uuid/dist/esm/v7.js +65 -0
- package/node_modules/uuid/dist/esm/validate.d.ts +2 -0
- package/node_modules/uuid/dist/esm/validate.js +5 -0
- package/node_modules/uuid/dist/esm/version.d.ts +2 -0
- package/node_modules/uuid/dist/esm/version.js +8 -0
- package/node_modules/uuid/dist/esm-browser/index.d.ts +15 -0
- package/node_modules/uuid/dist/esm-browser/index.js +14 -0
- package/node_modules/uuid/dist/esm-browser/max.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/max.js +1 -0
- package/node_modules/uuid/dist/esm-browser/md5.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/md5.js +135 -0
- package/node_modules/uuid/dist/esm-browser/native.d.ts +4 -0
- package/node_modules/uuid/dist/esm-browser/native.js +2 -0
- package/node_modules/uuid/dist/esm-browser/nil.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/nil.js +1 -0
- package/node_modules/uuid/dist/esm-browser/parse.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/parse.js +9 -0
- package/node_modules/uuid/dist/esm-browser/regex.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/regex.js +1 -0
- package/node_modules/uuid/dist/esm-browser/rng.d.ts +1 -0
- package/node_modules/uuid/dist/esm-browser/rng.js +11 -0
- package/node_modules/uuid/dist/esm-browser/sha1.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/sha1.js +70 -0
- package/node_modules/uuid/dist/esm-browser/stringify.d.ts +3 -0
- package/node_modules/uuid/dist/esm-browser/stringify.js +35 -0
- package/node_modules/uuid/dist/esm-browser/types.d.ts +21 -0
- package/node_modules/uuid/dist/esm-browser/types.js +1 -0
- package/node_modules/uuid/dist/esm-browser/uuid-bin.d.ts +1 -0
- package/node_modules/uuid/dist/esm-browser/uuid-bin.js +70 -0
- package/node_modules/uuid/dist/esm-browser/v1.d.ts +11 -0
- package/node_modules/uuid/dist/esm-browser/v1.js +83 -0
- package/node_modules/uuid/dist/esm-browser/v1ToV6.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/v1ToV6.js +10 -0
- package/node_modules/uuid/dist/esm-browser/v3.d.ts +9 -0
- package/node_modules/uuid/dist/esm-browser/v3.js +9 -0
- package/node_modules/uuid/dist/esm-browser/v35.d.ts +7 -0
- package/node_modules/uuid/dist/esm-browser/v35.js +36 -0
- package/node_modules/uuid/dist/esm-browser/v4.d.ts +4 -0
- package/node_modules/uuid/dist/esm-browser/v4.js +27 -0
- package/node_modules/uuid/dist/esm-browser/v5.d.ts +9 -0
- package/node_modules/uuid/dist/esm-browser/v5.js +9 -0
- package/node_modules/uuid/dist/esm-browser/v6.d.ts +4 -0
- package/node_modules/uuid/dist/esm-browser/v6.js +17 -0
- package/node_modules/uuid/dist/esm-browser/v6ToV1.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/v6ToV1.js +10 -0
- package/node_modules/uuid/dist/esm-browser/v7.d.ts +9 -0
- package/node_modules/uuid/dist/esm-browser/v7.js +65 -0
- package/node_modules/uuid/dist/esm-browser/validate.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/validate.js +5 -0
- package/node_modules/uuid/dist/esm-browser/version.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/version.js +8 -0
- package/node_modules/uuid/package.json +132 -0
- package/package.json +8 -4
|
@@ -0,0 +1,550 @@
|
|
|
1
|
+
|
|
2
|
+
var qs = require("querystring");
|
|
3
|
+
var uuid = require("uuid");
|
|
4
|
+
var should = require("should");
|
|
5
|
+
var sinon = require("sinon");
|
|
6
|
+
var url = require("url");
|
|
7
|
+
|
|
8
|
+
var ua = require("../lib/index.js");
|
|
9
|
+
var utils = require("../lib/utils.js");
|
|
10
|
+
var config = require("../lib/config.js");
|
|
11
|
+
var request = require("../lib/request");
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
describe("ua", function () {
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
describe("#item", function () {
|
|
18
|
+
var _enqueue;
|
|
19
|
+
|
|
20
|
+
beforeEach(function () {
|
|
21
|
+
_enqueue = sinon.stub(ua.Visitor.prototype, "_enqueue", function (type, params, fn) {
|
|
22
|
+
if (fn) {
|
|
23
|
+
(typeof fn).should.equal('function', "#_enqueue should receive a callback")
|
|
24
|
+
fn();
|
|
25
|
+
}
|
|
26
|
+
return this;
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
afterEach(function () {
|
|
31
|
+
_enqueue.restore()
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
it("should be available via the #i shortcut", function () {
|
|
36
|
+
var visitor = ua()
|
|
37
|
+
visitor.i.should.equal(visitor.item)
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
it("should accept arguments (price) when chained to transaction", function () {
|
|
42
|
+
var transaction = Math.random().toString();
|
|
43
|
+
var price = Math.random();
|
|
44
|
+
|
|
45
|
+
var visitor = ua().transaction(transaction);
|
|
46
|
+
|
|
47
|
+
var result = visitor.item(price);
|
|
48
|
+
|
|
49
|
+
visitor._context = result._context;
|
|
50
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
51
|
+
result.should.be.instanceof(ua.Visitor);
|
|
52
|
+
result._context.should.eql(_enqueue.args[1][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
53
|
+
|
|
54
|
+
_enqueue.calledTwice.should.equal(true, "#_enqueue should have been called twice, once for the transaction before");
|
|
55
|
+
_enqueue.args[0][0].should.equal("transaction");
|
|
56
|
+
_enqueue.args[1][0].should.equal("item");
|
|
57
|
+
_enqueue.args[1][1].should.have.keys("ti", "ip")
|
|
58
|
+
_enqueue.args[1][1].ti.should.equal(transaction);
|
|
59
|
+
_enqueue.args[1][1].ip.should.equal(price);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
it("should accept arguments (price, fn) when chained to transaction", function () {
|
|
64
|
+
var transaction = Math.random().toString();
|
|
65
|
+
var price = Math.random();
|
|
66
|
+
var fn = sinon.spy()
|
|
67
|
+
|
|
68
|
+
var visitor = ua().transaction(transaction);
|
|
69
|
+
|
|
70
|
+
var result = visitor.item(price, fn);
|
|
71
|
+
|
|
72
|
+
visitor._context = result._context;
|
|
73
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
74
|
+
result.should.be.instanceof(ua.Visitor);
|
|
75
|
+
result._context.should.eql(_enqueue.args[1][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
76
|
+
|
|
77
|
+
_enqueue.calledTwice.should.equal(true, "#_enqueue should have been called twice, once for the transaction before");
|
|
78
|
+
_enqueue.args[0][0].should.equal("transaction");
|
|
79
|
+
_enqueue.args[1][0].should.equal("item");
|
|
80
|
+
_enqueue.args[1][1].should.have.keys("ti", "ip")
|
|
81
|
+
_enqueue.args[1][1].ti.should.equal(transaction);
|
|
82
|
+
_enqueue.args[1][1].ip.should.equal(price);
|
|
83
|
+
|
|
84
|
+
fn.calledOnce.should.equal(true, "callback should have been called once")
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
it("should accept arguments (price, quantity) when chained to transaction", function () {
|
|
89
|
+
var transaction = Math.random().toString();
|
|
90
|
+
var price = Math.random();
|
|
91
|
+
var quantity = Math.random();
|
|
92
|
+
|
|
93
|
+
var visitor = ua().transaction(transaction);
|
|
94
|
+
|
|
95
|
+
var result = visitor.item(price, quantity);
|
|
96
|
+
|
|
97
|
+
visitor._context = result._context;
|
|
98
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
99
|
+
result.should.be.instanceof(ua.Visitor);
|
|
100
|
+
result._context.should.eql(_enqueue.args[1][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
101
|
+
|
|
102
|
+
_enqueue.calledTwice.should.equal(true, "#_enqueue should have been called twice, once for the transaction before");
|
|
103
|
+
_enqueue.args[0][0].should.equal("transaction");
|
|
104
|
+
_enqueue.args[1][0].should.equal("item");
|
|
105
|
+
_enqueue.args[1][1].should.have.keys("ti", "ip", "iq")
|
|
106
|
+
_enqueue.args[1][1].ti.should.equal(transaction);
|
|
107
|
+
_enqueue.args[1][1].ip.should.equal(price);
|
|
108
|
+
_enqueue.args[1][1].iq.should.equal(quantity);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
it("should accept arguments (price, quantity, fn) when chained to transaction", function () {
|
|
113
|
+
var transaction = Math.random().toString();
|
|
114
|
+
var price = Math.random();
|
|
115
|
+
var quantity = Math.random();
|
|
116
|
+
var fn = sinon.spy()
|
|
117
|
+
|
|
118
|
+
var visitor = ua().transaction(transaction);
|
|
119
|
+
|
|
120
|
+
var result = visitor.item(price, quantity, fn);
|
|
121
|
+
|
|
122
|
+
visitor._context = result._context;
|
|
123
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
124
|
+
result.should.be.instanceof(ua.Visitor);
|
|
125
|
+
result._context.should.eql(_enqueue.args[1][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
126
|
+
|
|
127
|
+
_enqueue.calledTwice.should.equal(true, "#_enqueue should have been called twice, once for the transaction before");
|
|
128
|
+
_enqueue.args[0][0].should.equal("transaction");
|
|
129
|
+
_enqueue.args[1][0].should.equal("item");
|
|
130
|
+
_enqueue.args[1][1].should.have.keys("ti", "ip", "iq")
|
|
131
|
+
_enqueue.args[1][1].ti.should.equal(transaction);
|
|
132
|
+
_enqueue.args[1][1].ip.should.equal(price);
|
|
133
|
+
_enqueue.args[1][1].iq.should.equal(quantity);
|
|
134
|
+
|
|
135
|
+
fn.calledOnce.should.equal(true, "callback should have been called once")
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
it("should accept arguments (price, quantity, sku) when chained to transaction", function () {
|
|
140
|
+
var transaction = Math.random().toString();
|
|
141
|
+
var price = Math.random();
|
|
142
|
+
var quantity = Math.random();
|
|
143
|
+
var sku = Math.random().toString();
|
|
144
|
+
|
|
145
|
+
var visitor = ua().transaction(transaction);
|
|
146
|
+
|
|
147
|
+
var result = visitor.item(price, quantity, sku);
|
|
148
|
+
|
|
149
|
+
visitor._context = result._context;
|
|
150
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
151
|
+
result.should.be.instanceof(ua.Visitor);
|
|
152
|
+
result._context.should.eql(_enqueue.args[1][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
153
|
+
|
|
154
|
+
_enqueue.calledTwice.should.equal(true, "#_enqueue should have been called twice, once for the transaction before");
|
|
155
|
+
_enqueue.args[0][0].should.equal("transaction");
|
|
156
|
+
_enqueue.args[1][0].should.equal("item");
|
|
157
|
+
_enqueue.args[1][1].should.have.keys("ti", "ip", "iq", "ic")
|
|
158
|
+
_enqueue.args[1][1].ti.should.equal(transaction);
|
|
159
|
+
_enqueue.args[1][1].ip.should.equal(price);
|
|
160
|
+
_enqueue.args[1][1].iq.should.equal(quantity);
|
|
161
|
+
_enqueue.args[1][1].ic.should.equal(sku);
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
it("should accept arguments (price, quantity, sku, fn) when chained to transaction", function () {
|
|
166
|
+
var transaction = Math.random().toString();
|
|
167
|
+
var price = Math.random();
|
|
168
|
+
var quantity = Math.random();
|
|
169
|
+
var sku = Math.random().toString();
|
|
170
|
+
var fn = sinon.spy()
|
|
171
|
+
|
|
172
|
+
var visitor = ua().transaction(transaction);
|
|
173
|
+
|
|
174
|
+
var result = visitor.item(price, quantity, sku, fn);
|
|
175
|
+
|
|
176
|
+
visitor._context = result._context;
|
|
177
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
178
|
+
result.should.be.instanceof(ua.Visitor);
|
|
179
|
+
result._context.should.eql(_enqueue.args[1][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
180
|
+
|
|
181
|
+
_enqueue.calledTwice.should.equal(true, "#_enqueue should have been called twice, once for the transaction before");
|
|
182
|
+
_enqueue.args[0][0].should.equal("transaction");
|
|
183
|
+
_enqueue.args[1][0].should.equal("item");
|
|
184
|
+
_enqueue.args[1][1].should.have.keys("ti", "ip", "iq", "ic")
|
|
185
|
+
_enqueue.args[1][1].ti.should.equal(transaction);
|
|
186
|
+
_enqueue.args[1][1].ip.should.equal(price);
|
|
187
|
+
_enqueue.args[1][1].iq.should.equal(quantity);
|
|
188
|
+
_enqueue.args[1][1].ic.should.equal(sku);
|
|
189
|
+
|
|
190
|
+
fn.calledOnce.should.equal(true, "callback should have been called once")
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
it("should accept arguments (price, quantity, sku, name) when chained to transaction", function () {
|
|
195
|
+
var transaction = Math.random().toString();
|
|
196
|
+
var price = Math.random();
|
|
197
|
+
var quantity = Math.random();
|
|
198
|
+
var sku = Math.random().toString();
|
|
199
|
+
var name = Math.random().toString();
|
|
200
|
+
|
|
201
|
+
var visitor = ua().transaction(transaction);
|
|
202
|
+
|
|
203
|
+
var result = visitor.item(price, quantity, sku, name);
|
|
204
|
+
|
|
205
|
+
visitor._context = result._context;
|
|
206
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
207
|
+
result.should.be.instanceof(ua.Visitor);
|
|
208
|
+
result._context.should.eql(_enqueue.args[1][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
209
|
+
|
|
210
|
+
_enqueue.calledTwice.should.equal(true, "#_enqueue should have been called twice, once for the transaction before");
|
|
211
|
+
_enqueue.args[0][0].should.equal("transaction");
|
|
212
|
+
_enqueue.args[1][0].should.equal("item");
|
|
213
|
+
_enqueue.args[1][1].should.have.keys("ti", "ip", "iq", "ic", "in")
|
|
214
|
+
_enqueue.args[1][1].ti.should.equal(transaction);
|
|
215
|
+
_enqueue.args[1][1].ip.should.equal(price);
|
|
216
|
+
_enqueue.args[1][1].iq.should.equal(quantity);
|
|
217
|
+
_enqueue.args[1][1].ic.should.equal(sku);
|
|
218
|
+
_enqueue.args[1][1].in.should.equal(name);
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
it("should accept arguments (price, quantity, sku, name, fn) when chained to transaction", function () {
|
|
223
|
+
var transaction = Math.random().toString();
|
|
224
|
+
var price = Math.random();
|
|
225
|
+
var quantity = Math.random();
|
|
226
|
+
var sku = Math.random().toString();
|
|
227
|
+
var name = Math.random().toString();
|
|
228
|
+
var fn = sinon.spy()
|
|
229
|
+
|
|
230
|
+
var visitor = ua().transaction(transaction);
|
|
231
|
+
|
|
232
|
+
var result = visitor.item(price, quantity, sku, name, fn);
|
|
233
|
+
|
|
234
|
+
visitor._context = result._context;
|
|
235
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
236
|
+
result.should.be.instanceof(ua.Visitor);
|
|
237
|
+
result._context.should.eql(_enqueue.args[1][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
238
|
+
|
|
239
|
+
_enqueue.calledTwice.should.equal(true, "#_enqueue should have been called twice, once for the transaction before");
|
|
240
|
+
_enqueue.args[0][0].should.equal("transaction");
|
|
241
|
+
_enqueue.args[1][0].should.equal("item");
|
|
242
|
+
_enqueue.args[1][1].should.have.keys("ti", "ip", "iq", "ic", "in")
|
|
243
|
+
_enqueue.args[1][1].ti.should.equal(transaction);
|
|
244
|
+
_enqueue.args[1][1].ip.should.equal(price);
|
|
245
|
+
_enqueue.args[1][1].iq.should.equal(quantity);
|
|
246
|
+
_enqueue.args[1][1].ic.should.equal(sku);
|
|
247
|
+
_enqueue.args[1][1].in.should.equal(name);
|
|
248
|
+
|
|
249
|
+
fn.calledOnce.should.equal(true, "callback should have been called once")
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
it("should accept arguments (price, quantity, sku, name, variation) when chained to transaction", function () {
|
|
254
|
+
var transaction = Math.random().toString();
|
|
255
|
+
var price = Math.random();
|
|
256
|
+
var quantity = Math.random();
|
|
257
|
+
var sku = Math.random().toString();
|
|
258
|
+
var name = Math.random().toString();
|
|
259
|
+
var variation = Math.random().toString();
|
|
260
|
+
|
|
261
|
+
var visitor = ua().transaction(transaction);
|
|
262
|
+
|
|
263
|
+
var result = visitor.item(price, quantity, sku, name, variation);
|
|
264
|
+
|
|
265
|
+
visitor._context = result._context;
|
|
266
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
267
|
+
result.should.be.instanceof(ua.Visitor);
|
|
268
|
+
result._context.should.eql(_enqueue.args[1][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
269
|
+
|
|
270
|
+
_enqueue.calledTwice.should.equal(true, "#_enqueue should have been called twice, once for the transaction before");
|
|
271
|
+
_enqueue.args[0][0].should.equal("transaction");
|
|
272
|
+
_enqueue.args[1][0].should.equal("item");
|
|
273
|
+
_enqueue.args[1][1].should.have.keys("ti", "ip", "iq", "ic", "in", "iv")
|
|
274
|
+
_enqueue.args[1][1].ti.should.equal(transaction);
|
|
275
|
+
_enqueue.args[1][1].ip.should.equal(price);
|
|
276
|
+
_enqueue.args[1][1].iq.should.equal(quantity);
|
|
277
|
+
_enqueue.args[1][1].ic.should.equal(sku);
|
|
278
|
+
_enqueue.args[1][1].in.should.equal(name);
|
|
279
|
+
_enqueue.args[1][1].iv.should.equal(variation);
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
it("should accept arguments (price, quantity, sku, name, variation, fn) when chained to transaction", function () {
|
|
284
|
+
var transaction = Math.random().toString();
|
|
285
|
+
var price = Math.random();
|
|
286
|
+
var quantity = Math.random();
|
|
287
|
+
var sku = Math.random().toString();
|
|
288
|
+
var name = Math.random().toString();
|
|
289
|
+
var variation = Math.random().toString();
|
|
290
|
+
var fn = sinon.spy()
|
|
291
|
+
|
|
292
|
+
var visitor = ua().transaction(transaction);
|
|
293
|
+
|
|
294
|
+
var result = visitor.item(price, quantity, sku, name, variation, fn);
|
|
295
|
+
|
|
296
|
+
visitor._context = result._context;
|
|
297
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
298
|
+
result.should.be.instanceof(ua.Visitor);
|
|
299
|
+
result._context.should.eql(_enqueue.args[1][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
300
|
+
|
|
301
|
+
_enqueue.calledTwice.should.equal(true, "#_enqueue should have been called twice, once for the transaction before");
|
|
302
|
+
_enqueue.args[0][0].should.equal("transaction");
|
|
303
|
+
_enqueue.args[1][0].should.equal("item");
|
|
304
|
+
_enqueue.args[1][1].should.have.keys("ti", "ip", "iq", "ic", "in", "iv")
|
|
305
|
+
_enqueue.args[1][1].ti.should.equal(transaction);
|
|
306
|
+
_enqueue.args[1][1].ip.should.equal(price);
|
|
307
|
+
_enqueue.args[1][1].iq.should.equal(quantity);
|
|
308
|
+
_enqueue.args[1][1].ic.should.equal(sku);
|
|
309
|
+
_enqueue.args[1][1].in.should.equal(name);
|
|
310
|
+
_enqueue.args[1][1].iv.should.equal(variation);
|
|
311
|
+
|
|
312
|
+
fn.calledOnce.should.equal(true, "callback should have been called once")
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
it("should accept arguments (price, quantity, sku, name, variation, params) when chained to transaction", function () {
|
|
317
|
+
var transaction = Math.random().toString();
|
|
318
|
+
var price = Math.random();
|
|
319
|
+
var quantity = Math.random();
|
|
320
|
+
var sku = Math.random().toString();
|
|
321
|
+
var name = Math.random().toString();
|
|
322
|
+
var variation = Math.random().toString();
|
|
323
|
+
var params = {foo: Math.random().toString()};
|
|
324
|
+
|
|
325
|
+
var visitor = ua().transaction(transaction);
|
|
326
|
+
|
|
327
|
+
var result = visitor.item(price, quantity, sku, name, variation, params);
|
|
328
|
+
|
|
329
|
+
visitor._context = result._context;
|
|
330
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
331
|
+
result.should.be.instanceof(ua.Visitor);
|
|
332
|
+
result._context.should.eql(_enqueue.args[1][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
333
|
+
|
|
334
|
+
_enqueue.calledTwice.should.equal(true, "#_enqueue should have been called twice, once for the transaction before");
|
|
335
|
+
_enqueue.args[0][0].should.equal("transaction");
|
|
336
|
+
_enqueue.args[1][0].should.equal("item");
|
|
337
|
+
_enqueue.args[1][1].should.have.keys("ti", "ip", "iq", "ic", "in", "iv", "foo")
|
|
338
|
+
_enqueue.args[1][1].ti.should.equal(transaction);
|
|
339
|
+
_enqueue.args[1][1].ip.should.equal(price);
|
|
340
|
+
_enqueue.args[1][1].iq.should.equal(quantity);
|
|
341
|
+
_enqueue.args[1][1].ic.should.equal(sku);
|
|
342
|
+
_enqueue.args[1][1].in.should.equal(name);
|
|
343
|
+
_enqueue.args[1][1].iv.should.equal(variation);
|
|
344
|
+
_enqueue.args[1][1].foo.should.equal(params.foo);
|
|
345
|
+
});
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
it("should accept arguments (price, quantity, sku, name, variation, params, fn) when chained to transaction", function () {
|
|
349
|
+
var transaction = Math.random().toString();
|
|
350
|
+
var price = Math.random();
|
|
351
|
+
var quantity = Math.random();
|
|
352
|
+
var sku = Math.random().toString();
|
|
353
|
+
var name = Math.random().toString();
|
|
354
|
+
var variation = Math.random().toString();
|
|
355
|
+
var params = {foo: Math.random().toString()};
|
|
356
|
+
var fn = sinon.spy()
|
|
357
|
+
|
|
358
|
+
var visitor = ua().transaction(transaction);
|
|
359
|
+
|
|
360
|
+
var result = visitor.item(price, quantity, sku, name, variation, params, fn);
|
|
361
|
+
|
|
362
|
+
visitor._context = result._context;
|
|
363
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
364
|
+
result.should.be.instanceof(ua.Visitor);
|
|
365
|
+
result._context.should.eql(_enqueue.args[1][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
366
|
+
|
|
367
|
+
_enqueue.calledTwice.should.equal(true, "#_enqueue should have been called twice, once for the transaction before");
|
|
368
|
+
_enqueue.args[0][0].should.equal("transaction");
|
|
369
|
+
_enqueue.args[1][0].should.equal("item");
|
|
370
|
+
_enqueue.args[1][1].should.have.keys("ti", "ip", "iq", "ic", "in", "iv", "foo")
|
|
371
|
+
_enqueue.args[1][1].ti.should.equal(transaction);
|
|
372
|
+
_enqueue.args[1][1].ip.should.equal(price);
|
|
373
|
+
_enqueue.args[1][1].iq.should.equal(quantity);
|
|
374
|
+
_enqueue.args[1][1].ic.should.equal(sku);
|
|
375
|
+
_enqueue.args[1][1].in.should.equal(name);
|
|
376
|
+
_enqueue.args[1][1].iv.should.equal(variation);
|
|
377
|
+
_enqueue.args[1][1].foo.should.equal(params.foo);
|
|
378
|
+
|
|
379
|
+
fn.calledOnce.should.equal(true, "callback should have been called once")
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
it("should accept arguments (price, quantity, sku, name, variation, params, fn) when params include transaction", function () {
|
|
384
|
+
var price = Math.random();
|
|
385
|
+
var quantity = Math.random();
|
|
386
|
+
var sku = Math.random().toString();
|
|
387
|
+
var name = Math.random().toString();
|
|
388
|
+
var variation = Math.random().toString();
|
|
389
|
+
var params = {ti: Math.random()};
|
|
390
|
+
var fn = sinon.spy()
|
|
391
|
+
|
|
392
|
+
var visitor = ua();
|
|
393
|
+
|
|
394
|
+
var result = visitor.item(price, quantity, sku, name, variation, params, fn);
|
|
395
|
+
|
|
396
|
+
visitor._context = result._context;
|
|
397
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
398
|
+
result.should.be.instanceof(ua.Visitor);
|
|
399
|
+
result._context.should.eql(_enqueue.args[0][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
400
|
+
|
|
401
|
+
_enqueue.calledOnce.should.equal(true, "#_enqueue should have been called once");
|
|
402
|
+
_enqueue.args[0][0].should.equal("item");
|
|
403
|
+
_enqueue.args[0][1].should.have.keys("ti", "ip", "iq", "ic", "in", "iv")
|
|
404
|
+
_enqueue.args[0][1].ip.should.equal(price);
|
|
405
|
+
_enqueue.args[0][1].iq.should.equal(quantity);
|
|
406
|
+
_enqueue.args[0][1].ic.should.equal(sku);
|
|
407
|
+
_enqueue.args[0][1].in.should.equal(name);
|
|
408
|
+
_enqueue.args[0][1].iv.should.equal(variation);
|
|
409
|
+
_enqueue.args[0][1].ti.should.equal(params.ti);
|
|
410
|
+
|
|
411
|
+
fn.calledOnce.should.equal(true, "callback should have been called once")
|
|
412
|
+
});
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
it("should accept arguments (params, fn) when params include transaction", function () {
|
|
416
|
+
var params = {
|
|
417
|
+
ip: Math.random(),
|
|
418
|
+
iq: Math.random(),
|
|
419
|
+
ic: Math.random().toString(),
|
|
420
|
+
in: Math.random().toString(),
|
|
421
|
+
iv: Math.random().toString(),
|
|
422
|
+
ti: Math.random()
|
|
423
|
+
};
|
|
424
|
+
var fn = sinon.spy()
|
|
425
|
+
|
|
426
|
+
var visitor = ua();
|
|
427
|
+
|
|
428
|
+
var result = visitor.item(params, fn);
|
|
429
|
+
|
|
430
|
+
visitor._context = result._context;
|
|
431
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
432
|
+
result.should.be.instanceof(ua.Visitor);
|
|
433
|
+
result._context.should.eql(_enqueue.args[0][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
434
|
+
|
|
435
|
+
_enqueue.calledOnce.should.equal(true, "#_enqueue should have been called once");
|
|
436
|
+
_enqueue.args[0][0].should.equal("item");
|
|
437
|
+
_enqueue.args[0][1].should.have.keys("ti", "ip", "iq", "ic", "in", "iv")
|
|
438
|
+
_enqueue.args[0][1].ip.should.equal(params.ip);
|
|
439
|
+
_enqueue.args[0][1].iq.should.equal(params.iq);
|
|
440
|
+
_enqueue.args[0][1].ic.should.equal(params.ic);
|
|
441
|
+
_enqueue.args[0][1].in.should.equal(params.in);
|
|
442
|
+
_enqueue.args[0][1].iv.should.equal(params.iv);
|
|
443
|
+
_enqueue.args[0][1].ti.should.equal(params.ti);
|
|
444
|
+
|
|
445
|
+
fn.calledOnce.should.equal(true, "callback should have been called once")
|
|
446
|
+
});
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
it("should accept arguments (params, fn) when chained to a transaction", function () {
|
|
450
|
+
var transaction = Math.random().toString();
|
|
451
|
+
var params = {
|
|
452
|
+
ip: Math.random(),
|
|
453
|
+
iq: Math.random(),
|
|
454
|
+
ic: Math.random().toString(),
|
|
455
|
+
in: Math.random().toString(),
|
|
456
|
+
iv: Math.random().toString()
|
|
457
|
+
};
|
|
458
|
+
var fn = sinon.spy()
|
|
459
|
+
|
|
460
|
+
var visitor = ua().transaction(transaction);
|
|
461
|
+
|
|
462
|
+
var result = visitor.item(params, fn);
|
|
463
|
+
|
|
464
|
+
visitor._context = result._context;
|
|
465
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
466
|
+
result.should.be.instanceof(ua.Visitor);
|
|
467
|
+
result._context.should.eql(_enqueue.args[1][1], "the transaction params should be persisted as the context of the visitor clone")
|
|
468
|
+
|
|
469
|
+
_enqueue.calledTwice.should.equal(true, "#_enqueue should have been called twice, once for the transaction");
|
|
470
|
+
_enqueue.args[1][0].should.equal("item");
|
|
471
|
+
_enqueue.args[1][1].should.have.keys("ti", "ip", "iq", "ic", "in", "iv")
|
|
472
|
+
_enqueue.args[1][1].ip.should.equal(params.ip);
|
|
473
|
+
_enqueue.args[1][1].iq.should.equal(params.iq);
|
|
474
|
+
_enqueue.args[1][1].ic.should.equal(params.ic);
|
|
475
|
+
_enqueue.args[1][1].in.should.equal(params.in);
|
|
476
|
+
_enqueue.args[1][1].iv.should.equal(params.iv);
|
|
477
|
+
_enqueue.args[1][1].ti.should.equal(transaction);
|
|
478
|
+
|
|
479
|
+
fn.calledOnce.should.equal(true, "callback should have been called once")
|
|
480
|
+
});
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
it("should allow daisy-chaining to re-use arguments", function () {
|
|
484
|
+
var transaction = Math.random().toString();
|
|
485
|
+
var price = Math.random();
|
|
486
|
+
var quantity = Math.random();
|
|
487
|
+
var sku = Math.random().toString();
|
|
488
|
+
var name = Math.random().toString();
|
|
489
|
+
var name2 = Math.random().toString();
|
|
490
|
+
var variation = Math.random().toString();
|
|
491
|
+
var fn = sinon.spy()
|
|
492
|
+
|
|
493
|
+
var visitor = ua().transaction(transaction);
|
|
494
|
+
|
|
495
|
+
var result = visitor.item(price, quantity, sku, name, variation).item({in: name2}, fn);
|
|
496
|
+
|
|
497
|
+
_enqueue.calledThrice.should.equal(true, "#_enqueue should have been called thrice, once for the transaction before");
|
|
498
|
+
_enqueue.args[0][0].should.equal("transaction");
|
|
499
|
+
|
|
500
|
+
_enqueue.args[1][0].should.equal(_enqueue.args[2][0]);
|
|
501
|
+
_enqueue.args[1][1].ti.should.equal(_enqueue.args[2][1].ti, "ti should be equal on both");
|
|
502
|
+
_enqueue.args[1][1].ip.should.equal(_enqueue.args[2][1].ip, "ip should be equal on both");
|
|
503
|
+
_enqueue.args[1][1].iq.should.equal(_enqueue.args[2][1].iq, "iq should be equal on both");
|
|
504
|
+
_enqueue.args[1][1].ic.should.equal(_enqueue.args[2][1].ic, "ic should be equal on both");
|
|
505
|
+
_enqueue.args[1][1].iv.should.equal(_enqueue.args[2][1].iv, "iv should be equal on both");
|
|
506
|
+
_enqueue.args[2][1].in.should.equal(name2, "name should have changed on second item");
|
|
507
|
+
|
|
508
|
+
fn.calledOnce.should.equal(true, "callback should have been called once")
|
|
509
|
+
});
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
it("should fail without transaction ID", function () {
|
|
513
|
+
var params = {
|
|
514
|
+
ip: Math.random(),
|
|
515
|
+
iq: Math.random(),
|
|
516
|
+
ic: Math.random().toString(),
|
|
517
|
+
in: Math.random().toString(),
|
|
518
|
+
iv: Math.random().toString()
|
|
519
|
+
};
|
|
520
|
+
var fn = sinon.spy()
|
|
521
|
+
|
|
522
|
+
var visitor = ua();
|
|
523
|
+
|
|
524
|
+
var result = visitor.item(params, fn);
|
|
525
|
+
|
|
526
|
+
visitor._context = result._context;
|
|
527
|
+
result.should.eql(visitor, "should return a visitor that is identical except for the context");
|
|
528
|
+
|
|
529
|
+
result.should.be.instanceof(ua.Visitor);
|
|
530
|
+
result._context.should.eql({}, "the transaction params should not be persisted")
|
|
531
|
+
|
|
532
|
+
_enqueue.called.should.equal(false, "#_enqueue should have not been called once");
|
|
533
|
+
fn.calledOnce.should.equal(true, "callback should have been called once");
|
|
534
|
+
fn.args[0][0].should.be.instanceof(Error);
|
|
535
|
+
fn.thisValues[0].should.equal(visitor);
|
|
536
|
+
});
|
|
537
|
+
|
|
538
|
+
});
|
|
539
|
+
|
|
540
|
+
});
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
|
|
2
|
+
var qs = require("querystring");
|
|
3
|
+
var uuid = require("uuid");
|
|
4
|
+
var should = require("should");
|
|
5
|
+
var sinon = require("sinon");
|
|
6
|
+
var url = require("url");
|
|
7
|
+
|
|
8
|
+
var ua = require("../lib/index.js");
|
|
9
|
+
var utils = require("../lib/utils.js");
|
|
10
|
+
var config = require("../lib/config.js");
|
|
11
|
+
var request = require("../lib/request");
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
describe("ua", function () {
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
describe("middleware", function () {
|
|
18
|
+
|
|
19
|
+
it("should return a middleware-capable function", function () {
|
|
20
|
+
var middleware = ua.middleware()
|
|
21
|
+
middleware.length.should.equal(3, "function signature should have three arguments")
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it("should try to create a visitor based on session data", function () {
|
|
25
|
+
var req = {session: {cid: uuid.v4()}}
|
|
26
|
+
var options = {debug: true}
|
|
27
|
+
var middleware = ua.middleware("tid", options)
|
|
28
|
+
var next = sinon.spy()
|
|
29
|
+
|
|
30
|
+
middleware(req, {}, next)
|
|
31
|
+
|
|
32
|
+
next.calledOnce.should.equal(true, "next() should've been called once")
|
|
33
|
+
req.visitor.should.be.instanceof(ua.Visitor, "The request should have gained a UA visitor instance")
|
|
34
|
+
req.visitor.cid.should.equal(req.session.cid, "The client ID should've been propagated")
|
|
35
|
+
req.visitor.tid.should.equal("tid", "The tracking ID should've been propagated")
|
|
36
|
+
req.visitor.options.should.eql(options, "The options should've been proprapated")
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
it("should try to create a visitor based on the _ga cookie", function () {
|
|
41
|
+
var req = {cookies: {_ga: "GA1.2.46218180.1366882461"}}
|
|
42
|
+
var options = {debug: false}
|
|
43
|
+
var middleware = ua.middleware("tid", options)
|
|
44
|
+
var next = sinon.spy()
|
|
45
|
+
|
|
46
|
+
middleware(req, {}, next)
|
|
47
|
+
|
|
48
|
+
next.calledOnce.should.equal(true, "next() should've been called once")
|
|
49
|
+
req.visitor.should.be.instanceof(ua.Visitor, "The request should have gained a UA visitor instance")
|
|
50
|
+
req.visitor.cid.should.equal("46218180.1366882461", "The client ID should've been extracted from the cookie")
|
|
51
|
+
req.visitor.tid.should.equal("tid", "The tracking ID should've been propagated")
|
|
52
|
+
req.visitor.options.should.eql(options, "The options should've been proprapated")
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
it("should allow changing the _ga cookie name", function () {
|
|
57
|
+
var req = {cookies: {foo: "GA1.2.46218180.1366882461"}}
|
|
58
|
+
var options = {cookieName: "foo"}
|
|
59
|
+
var middleware = ua.middleware("tid", options)
|
|
60
|
+
var next = sinon.spy()
|
|
61
|
+
|
|
62
|
+
middleware(req, {}, next)
|
|
63
|
+
|
|
64
|
+
req.visitor.cid.should.equal("46218180.1366882461", "The client ID should've been extracted from the cookie")
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
it("should allow changing the variable name on req", function() {
|
|
68
|
+
var req = {cookies: {_ga: "GA1.2.46218180.1366882461"}}
|
|
69
|
+
var options = {instanceName: "banana"}
|
|
70
|
+
var middleware = ua.middleware("tid", options)
|
|
71
|
+
var next = sinon.spy()
|
|
72
|
+
|
|
73
|
+
middleware(req, {}, next)
|
|
74
|
+
|
|
75
|
+
req.banana.cid.should.equal("46218180.1366882461", "The request should have the UA visitor instance on the non-default variable name")
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
it("should store the cid in the session", function () {
|
|
80
|
+
var req = {cookies: {_ga: "GA1.2.46218180.1366882461"}, session: {}}
|
|
81
|
+
var options = {debug: false}
|
|
82
|
+
var middleware = ua.middleware("tid", options)
|
|
83
|
+
var next = sinon.spy()
|
|
84
|
+
|
|
85
|
+
middleware(req, {}, next)
|
|
86
|
+
|
|
87
|
+
req.session.cid.should.equal("46218180.1366882461", "The client ID should've saved to the session")
|
|
88
|
+
})
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
describe("createFromSession", function () {
|
|
92
|
+
|
|
93
|
+
it("should combine an existing tracking ID with a client ID from the session", function () {
|
|
94
|
+
var options = {debug: false}
|
|
95
|
+
var middleware = ua.middleware("tid", options)
|
|
96
|
+
var session = {cid: uuid.v4()}
|
|
97
|
+
|
|
98
|
+
var visitor = ua.createFromSession(session);
|
|
99
|
+
|
|
100
|
+
visitor.should.be.instanceof(ua.Visitor, "The request should have gained a UA visitor instance")
|
|
101
|
+
visitor.cid.should.equal(session.cid, "The client ID should've been extracted from the cookie")
|
|
102
|
+
visitor.tid.should.equal("tid", "The tracking ID should've been propagated")
|
|
103
|
+
visitor.options.should.eql(options, "The options should've been proprapated")
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|