_enqueue.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. var request = require("request");
  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. var ua = require("../lib/index.js");
  8. var utils = require("../lib/utils.js")
  9. var config = require("../lib/config.js")
  10. describe("ua", function () {
  11. describe("#_enqueue", function () {
  12. var send;
  13. beforeEach(function () {
  14. send = sinon.stub(ua.Visitor.prototype, "send").callsArg(0);
  15. });
  16. afterEach(function () {
  17. send.restore()
  18. });
  19. it("should accept arguments (type)", function () {
  20. var tid = "UA-XXXXX-XX";
  21. var cid = uuid.v4();
  22. var type = Math.random().toString()
  23. var visitor = ua(tid, cid)._enqueue(type);
  24. send.called.should.equal(false, "#send should not have been called without a callback");
  25. visitor._queue.length.should.equal(1, "1 tracking call should have been enqueued");
  26. visitor._queue[0].should.have.keys("v", "tid", "cid", "t")
  27. visitor._queue[0].tid.should.equal(tid)
  28. visitor._queue[0].cid.should.equal(cid)
  29. visitor._queue[0].t.should.equal(type)
  30. });
  31. it("should accept arguments (type, fn)", function () {
  32. var tid = "UA-XXXXX-XX";
  33. var cid = uuid.v4();
  34. var type = Math.random().toString()
  35. var fn = sinon.spy()
  36. var visitor = ua(tid, cid)._enqueue(type, fn);
  37. send.calledOnce.should.equal(true, "#send should have been called once");
  38. visitor._queue.length.should.equal(1, "1 tracking call should have been enqueued");
  39. visitor._queue[0].should.have.keys("v", "tid", "cid", "t")
  40. visitor._queue[0].tid.should.equal(tid)
  41. visitor._queue[0].cid.should.equal(cid)
  42. visitor._queue[0].t.should.equal(type)
  43. fn.calledOnce.should.equal(true, "callback should have been called once")
  44. });
  45. it("should accept arguments (type, params)", function () {
  46. var tid = "UA-XXXXX-XX";
  47. var cid = uuid.v4();
  48. var type = Math.random().toString()
  49. var params = {foo: Math.random().toString()}
  50. var visitor = ua(tid, cid)._enqueue(type, params);
  51. send.called.should.equal(false, "#send should not have been called without a callback");
  52. visitor._queue.length.should.equal(1, "1 tracking call should have been enqueued");
  53. visitor._queue[0].should.have.keys("v", "tid", "cid", "t", "foo")
  54. visitor._queue[0].tid.should.equal(tid)
  55. visitor._queue[0].cid.should.equal(cid)
  56. visitor._queue[0].foo.should.equal(params.foo);
  57. });
  58. it("should add userId if present on the Visitor", function() {
  59. var tid = "UA-XXXXX-XX";
  60. var cid = uuid.v4();
  61. var type = "type";
  62. var uid = "user1";
  63. var params = {}
  64. var visitor = ua(tid, cid, { uid: uid})._enqueue(type, params);
  65. visitor._queue[0].uid.should.equal(uid);
  66. });
  67. it("should accept arguments (type, params, fn)", function () {
  68. var tid = "UA-XXXXX-XX";
  69. var cid = uuid.v4();
  70. var type = Math.random().toString()
  71. var params = {foo: Math.random().toString()}
  72. var fn = sinon.spy()
  73. var visitor = ua(tid, cid)._enqueue(type, params, fn);
  74. send.calledOnce.should.equal(true, "#send should have been called once");
  75. visitor._queue.length.should.equal(1, "1 tracking call should have been enqueued");
  76. visitor._queue[0].should.have.keys("v", "tid", "cid", "t", "foo")
  77. visitor._queue[0].tid.should.equal(tid)
  78. visitor._queue[0].cid.should.equal(cid)
  79. visitor._queue[0].foo.should.equal(params.foo);
  80. fn.calledOnce.should.equal(true, "callback should have been called once")
  81. });
  82. it("should continue adding to the queue", function () {
  83. var tid = "UA-XXXXX-XX";
  84. var cid = uuid.v4();
  85. var type = Math.random().toString()
  86. var visitor = ua(tid, cid)
  87. visitor._enqueue(type);
  88. visitor._enqueue(type);
  89. visitor._enqueue(type);
  90. visitor._enqueue(type);
  91. visitor._queue.length.should.equal(4, "4 tracking calls should have been enqueued");
  92. })
  93. });
  94. });