2025-04-24 17:03:28 +08:00

145 lines
3.8 KiB
JavaScript

var request = require("request");
var qs = require("querystring");
var uuid = require("uuid");
var should = require("should");
var sinon = require("sinon");
var url = require("url");
var ua = require("../lib/index.js");
var utils = require("../lib/utils.js")
var config = require("../lib/config.js")
describe("ua", function () {
describe("#_enqueue", function () {
var send;
beforeEach(function () {
send = sinon.stub(ua.Visitor.prototype, "send").callsArg(0);
});
afterEach(function () {
send.restore()
});
it("should accept arguments (type)", function () {
var tid = "UA-XXXXX-XX";
var cid = uuid.v4();
var type = Math.random().toString()
var visitor = ua(tid, cid)._enqueue(type);
send.called.should.equal(false, "#send should not have been called without a callback");
visitor._queue.length.should.equal(1, "1 tracking call should have been enqueued");
visitor._queue[0].should.have.keys("v", "tid", "cid", "t")
visitor._queue[0].tid.should.equal(tid)
visitor._queue[0].cid.should.equal(cid)
visitor._queue[0].t.should.equal(type)
});
it("should accept arguments (type, fn)", function () {
var tid = "UA-XXXXX-XX";
var cid = uuid.v4();
var type = Math.random().toString()
var fn = sinon.spy()
var visitor = ua(tid, cid)._enqueue(type, fn);
send.calledOnce.should.equal(true, "#send should have been called once");
visitor._queue.length.should.equal(1, "1 tracking call should have been enqueued");
visitor._queue[0].should.have.keys("v", "tid", "cid", "t")
visitor._queue[0].tid.should.equal(tid)
visitor._queue[0].cid.should.equal(cid)
visitor._queue[0].t.should.equal(type)
fn.calledOnce.should.equal(true, "callback should have been called once")
});
it("should accept arguments (type, params)", function () {
var tid = "UA-XXXXX-XX";
var cid = uuid.v4();
var type = Math.random().toString()
var params = {foo: Math.random().toString()}
var visitor = ua(tid, cid)._enqueue(type, params);
send.called.should.equal(false, "#send should not have been called without a callback");
visitor._queue.length.should.equal(1, "1 tracking call should have been enqueued");
visitor._queue[0].should.have.keys("v", "tid", "cid", "t", "foo")
visitor._queue[0].tid.should.equal(tid)
visitor._queue[0].cid.should.equal(cid)
visitor._queue[0].foo.should.equal(params.foo);
});
it("should add userId if present on the Visitor", function() {
var tid = "UA-XXXXX-XX";
var cid = uuid.v4();
var type = "type";
var uid = "user1";
var params = {}
var visitor = ua(tid, cid, { uid: uid})._enqueue(type, params);
visitor._queue[0].uid.should.equal(uid);
});
it("should accept arguments (type, params, fn)", function () {
var tid = "UA-XXXXX-XX";
var cid = uuid.v4();
var type = Math.random().toString()
var params = {foo: Math.random().toString()}
var fn = sinon.spy()
var visitor = ua(tid, cid)._enqueue(type, params, fn);
send.calledOnce.should.equal(true, "#send should have been called once");
visitor._queue.length.should.equal(1, "1 tracking call should have been enqueued");
visitor._queue[0].should.have.keys("v", "tid", "cid", "t", "foo")
visitor._queue[0].tid.should.equal(tid)
visitor._queue[0].cid.should.equal(cid)
visitor._queue[0].foo.should.equal(params.foo);
fn.calledOnce.should.equal(true, "callback should have been called once")
});
it("should continue adding to the queue", function () {
var tid = "UA-XXXXX-XX";
var cid = uuid.v4();
var type = Math.random().toString()
var visitor = ua(tid, cid)
visitor._enqueue(type);
visitor._enqueue(type);
visitor._enqueue(type);
visitor._enqueue(type);
visitor._queue.length.should.equal(4, "4 tracking calls should have been enqueued");
})
});
});