report-v3.test.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
  3. var _iterator = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/symbol/iterator"));
  4. var _symbol = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/symbol"));
  5. var _reportV = require("./report-v3");
  6. var __read = void 0 && (void 0).__read || function (o, n) {
  7. var m = typeof _symbol["default"] === "function" && o[_iterator["default"]];
  8. if (!m) return o;
  9. var i = m.call(o),
  10. r,
  11. ar = [],
  12. e;
  13. try {
  14. while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {
  15. ar.push(r.value);
  16. }
  17. } catch (error) {
  18. e = {
  19. error: error
  20. };
  21. } finally {
  22. try {
  23. if (r && !r.done && (m = i["return"])) m.call(i);
  24. } finally {
  25. if (e) throw e.error;
  26. }
  27. }
  28. return ar;
  29. };
  30. var __spread = void 0 && (void 0).__spread || function () {
  31. for (var ar = [], i = 0; i < arguments.length; i++) {
  32. ar = ar.concat(__read(arguments[i]));
  33. }
  34. return ar;
  35. };
  36. var MockXHR =
  37. /** @class */
  38. function () {
  39. function MockXHR() {}
  40. MockXHR.prototype.onreadystatechange = function () {// null
  41. };
  42. MockXHR.prototype.clear = function () {
  43. this.sendData = '';
  44. this.openData = [];
  45. this.headerData = [];
  46. this.status = 0;
  47. this.readyState = 0;
  48. };
  49. MockXHR.prototype.open = function () {
  50. var args = [];
  51. for (var _i = 0; _i < arguments.length; _i++) {
  52. args[_i] = arguments[_i];
  53. }
  54. this.clear();
  55. this.openCount += 1;
  56. this.openData = args;
  57. };
  58. MockXHR.prototype.send = function (args) {
  59. this.sendData = args;
  60. };
  61. MockXHR.prototype.setRequestHeader = function () {
  62. var _a;
  63. var args = [];
  64. for (var _i = 0; _i < arguments.length; _i++) {
  65. args[_i] = arguments[_i];
  66. }
  67. (_a = this.headerData).push.apply(_a, __spread(args));
  68. };
  69. MockXHR.prototype.changeStatusAndState = function (readyState, status) {
  70. this.status = status;
  71. this.readyState = readyState;
  72. this.onreadystatechange();
  73. };
  74. return MockXHR;
  75. }();
  76. var mockXHR = new MockXHR();
  77. jest.mock('../utils', function () {
  78. return {
  79. createXHR: function createXHR() {
  80. return mockXHR;
  81. },
  82. getAuthHeaders: function getAuthHeaders(t) {
  83. return t;
  84. }
  85. };
  86. });
  87. describe('test report-v3', function () {
  88. var testData = {
  89. code: 200,
  90. reqId: 'reqId',
  91. host: 'host',
  92. remoteIp: 'remoteIp',
  93. port: 'port',
  94. duration: 1,
  95. time: 1,
  96. bytesSent: 1,
  97. upType: 'jssdk-h5',
  98. size: 1
  99. };
  100. test('stringify send Data', function () {
  101. (0, _reportV.reportV3)('token', testData, 3);
  102. mockXHR.changeStatusAndState(0, 0);
  103. expect(mockXHR.sendData).toBe([testData.code || '', testData.reqId || '', testData.host || '', testData.remoteIp || '', testData.port || '', testData.duration || '', testData.time || '', testData.bytesSent || '', testData.upType || '', testData.size || ''].join(','));
  104. });
  105. test('retry', function () {
  106. mockXHR.openCount = 0;
  107. (0, _reportV.reportV3)('token', testData);
  108. for (var index = 1; index <= 10; index++) {
  109. mockXHR.changeStatusAndState(4, 0);
  110. }
  111. expect(mockXHR.openCount).toBe(4);
  112. mockXHR.openCount = 0;
  113. (0, _reportV.reportV3)('token', testData, 4);
  114. for (var index = 1; index < 10; index++) {
  115. mockXHR.changeStatusAndState(4, 0);
  116. }
  117. expect(mockXHR.openCount).toBe(5);
  118. mockXHR.openCount = 0;
  119. (0, _reportV.reportV3)('token', testData, 0);
  120. for (var index = 1; index < 10; index++) {
  121. mockXHR.changeStatusAndState(4, 0);
  122. }
  123. expect(mockXHR.openCount).toBe(1);
  124. });
  125. });