UNPKG

3.68 kBJavaScriptView Raw
1
2var request = require("request");
3var qs = require("querystring");
4var uuid = require("uuid");
5var should = require("should");
6var sinon = require("sinon");
7var url = require("url");
8
9var ua = require("../lib/index.js");
10var utils = require("../lib/utils.js")
11var config = require("../lib/config.js")
12
13
14describe("ua", function () {
15
16 it("should be usable as a function", function () {
17 ua("foo").should.be.instanceof(ua.Visitor);
18 });
19
20 it("should be usable as a constructor", function () {
21 new ua("foo").should.be.instanceof(ua.Visitor);
22 });
23
24 it("should accept arguments (tid, cid, options)", function () {
25 var tid = "UA-XXXXX-XX"
26 var cid = uuid.v4()
27 var options = {};
28
29 var visitor = ua(tid, cid, options)
30
31 visitor.tid.should.equal(tid)
32 visitor.cid.should.equal(cid)
33 visitor.options.should.equal(options)
34 });
35
36 it("should accept arguments (tid, cid)", function () {
37 var tid = "UA-XXXXX-XX"
38 var cid = uuid.v4()
39
40 var visitor = ua(tid, cid)
41
42 visitor.tid.should.equal(tid)
43 visitor.cid.should.equal(cid)
44 visitor.options.should.eql({}, "An empty options hash should've been created")
45 });
46
47 it("should accept arguments (tid, options)", function () {
48 var tid = Math.random().toString();
49 var options = {}
50
51 var visitor = ua(tid, options)
52
53 visitor.tid.should.equal(tid)
54 utils.isUuid(visitor.cid).should.equal(true, "A valid random UUID should have been generated")
55 visitor.options.should.eql(options)
56
57 });
58
59 it("should accept arguments (options)", function () {
60 var options = {}
61
62 var visitor = ua(options);
63
64 visitor.should.have.property('tid', undefined);
65 utils.isUuid(visitor.cid).should.equal(true, "A valid random UUID should have been generated")
66 visitor.options.should.eql(options)
67 });
68
69 it("should accept tid and cid via the options arguments", function () {
70 var options = {
71 tid: "UA-XXXXX-XX",
72 cid: uuid.v4()
73 };
74
75 var visitor = ua(options);
76
77 visitor.tid.should.equal(options.tid)
78 visitor.cid.should.equal(options.cid)
79 visitor.options.should.equal(options)
80 });
81
82 it("should generate new cid (UUID) if provided one is in wrong format", function () {
83 var options = {
84 tid: "UA-XXXXX-XX",
85 cid: "custom-format-cid"
86 };
87
88 var next = sinon.spy(uuid, 'v4')
89
90 var visitor = ua(options);
91
92 next.calledOnce.should.equal(true, "next() should've been called once")
93 var generatedCid = next.returnValues[0]
94 uuid.v4.restore()
95
96 visitor.cid.should.not.equal(options.cid)
97 visitor.cid.should.equal(generatedCid)
98 });
99
100 it("should accept custom cid format when strictCidFormat is false", function () {
101 var options = {
102 tid: "UA-XXXXX-XX",
103 cid: "custom-format-cid",
104 strictCidFormat: false
105 };
106
107 var next = sinon.spy(uuid, 'v4')
108
109 var visitor = ua(options);
110
111 next.called.should.equal(false, "next() should't be called")
112 uuid.v4.restore()
113
114 visitor.cid.should.equal(options.cid)
115 });
116
117
118 describe("params", function () {
119
120 var visitor;
121
122 before(function () {
123 var tid = "UA-XXXXX-XX";
124 var cid = uuid.v4();
125 visitor = ua(tid, cid);
126 });
127
128 it('should not translate params', function(){
129 var params = {
130 tid: 1,
131 cid: 1,
132 somefake: 1,
133 v: 'a'
134 };
135
136 visitor._translateParams(params).should.eql(params);
137 })
138
139 it('should match all parameters and each should be in the list of accepted', function(){
140 var res = visitor._translateParams(config.parametersMap);
141 for (var i in res) {
142 if (res.hasOwnProperty(i)) {
143 res[i].should.equal(i);
144 config.acceptedParameters.should.containEql(i);
145 }
146 }
147 })
148
149 });
150
151});