@tellescope/sdk 1.245.1 → 1.246.2

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.
Files changed (67) hide show
  1. package/lib/cjs/tests/api_tests/account_switcher.test.d.ts +6 -0
  2. package/lib/cjs/tests/api_tests/account_switcher.test.d.ts.map +1 -0
  3. package/lib/cjs/tests/api_tests/account_switcher.test.js +445 -0
  4. package/lib/cjs/tests/api_tests/account_switcher.test.js.map +1 -0
  5. package/lib/cjs/tests/api_tests/beluga_pharmacy_mappings.test.d.ts +6 -0
  6. package/lib/cjs/tests/api_tests/beluga_pharmacy_mappings.test.d.ts.map +1 -0
  7. package/lib/cjs/tests/api_tests/beluga_pharmacy_mappings.test.js +357 -0
  8. package/lib/cjs/tests/api_tests/beluga_pharmacy_mappings.test.js.map +1 -0
  9. package/lib/cjs/tests/api_tests/calendar_event_limits.test.d.ts.map +1 -1
  10. package/lib/cjs/tests/api_tests/calendar_event_limits.test.js +163 -0
  11. package/lib/cjs/tests/api_tests/calendar_event_limits.test.js.map +1 -1
  12. package/lib/cjs/tests/api_tests/calendar_events_bulk_update.test.d.ts +5 -0
  13. package/lib/cjs/tests/api_tests/calendar_events_bulk_update.test.d.ts.map +1 -0
  14. package/lib/cjs/tests/api_tests/calendar_events_bulk_update.test.js +483 -0
  15. package/lib/cjs/tests/api_tests/calendar_events_bulk_update.test.js.map +1 -0
  16. package/lib/cjs/tests/api_tests/email_utils.test.d.ts +2 -0
  17. package/lib/cjs/tests/api_tests/email_utils.test.d.ts.map +1 -0
  18. package/lib/cjs/tests/api_tests/email_utils.test.js +141 -0
  19. package/lib/cjs/tests/api_tests/email_utils.test.js.map +1 -0
  20. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.d.ts +6 -0
  21. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -0
  22. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js +268 -0
  23. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js.map +1 -0
  24. package/lib/cjs/tests/api_tests/time_tracks.test.d.ts +20 -0
  25. package/lib/cjs/tests/api_tests/time_tracks.test.d.ts.map +1 -1
  26. package/lib/cjs/tests/api_tests/time_tracks.test.js +692 -20
  27. package/lib/cjs/tests/api_tests/time_tracks.test.js.map +1 -1
  28. package/lib/cjs/tests/tests.d.ts.map +1 -1
  29. package/lib/cjs/tests/tests.js +157 -122
  30. package/lib/cjs/tests/tests.js.map +1 -1
  31. package/lib/esm/tests/api_tests/account_switcher.test.d.ts +6 -0
  32. package/lib/esm/tests/api_tests/account_switcher.test.d.ts.map +1 -0
  33. package/lib/esm/tests/api_tests/account_switcher.test.js +438 -0
  34. package/lib/esm/tests/api_tests/account_switcher.test.js.map +1 -0
  35. package/lib/esm/tests/api_tests/beluga_pharmacy_mappings.test.d.ts +6 -0
  36. package/lib/esm/tests/api_tests/beluga_pharmacy_mappings.test.d.ts.map +1 -0
  37. package/lib/esm/tests/api_tests/beluga_pharmacy_mappings.test.js +353 -0
  38. package/lib/esm/tests/api_tests/beluga_pharmacy_mappings.test.js.map +1 -0
  39. package/lib/esm/tests/api_tests/calendar_event_limits.test.d.ts.map +1 -1
  40. package/lib/esm/tests/api_tests/calendar_event_limits.test.js +163 -0
  41. package/lib/esm/tests/api_tests/calendar_event_limits.test.js.map +1 -1
  42. package/lib/esm/tests/api_tests/calendar_events_bulk_update.test.d.ts +5 -0
  43. package/lib/esm/tests/api_tests/calendar_events_bulk_update.test.d.ts.map +1 -0
  44. package/lib/esm/tests/api_tests/calendar_events_bulk_update.test.js +479 -0
  45. package/lib/esm/tests/api_tests/calendar_events_bulk_update.test.js.map +1 -0
  46. package/lib/esm/tests/api_tests/email_utils.test.d.ts +2 -0
  47. package/lib/esm/tests/api_tests/email_utils.test.d.ts.map +1 -0
  48. package/lib/esm/tests/api_tests/email_utils.test.js +137 -0
  49. package/lib/esm/tests/api_tests/email_utils.test.js.map +1 -0
  50. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.d.ts +6 -0
  51. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -0
  52. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js +264 -0
  53. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js.map +1 -0
  54. package/lib/esm/tests/api_tests/time_tracks.test.d.ts +20 -0
  55. package/lib/esm/tests/api_tests/time_tracks.test.d.ts.map +1 -1
  56. package/lib/esm/tests/api_tests/time_tracks.test.js +687 -20
  57. package/lib/esm/tests/api_tests/time_tracks.test.js.map +1 -1
  58. package/lib/esm/tests/tests.d.ts.map +1 -1
  59. package/lib/esm/tests/tests.js +158 -123
  60. package/lib/esm/tests/tests.js.map +1 -1
  61. package/lib/tsconfig.tsbuildinfo +1 -1
  62. package/package.json +10 -10
  63. package/src/tests/api_tests/beluga_pharmacy_mappings.test.ts +351 -0
  64. package/src/tests/api_tests/calendar_event_limits.test.ts +195 -0
  65. package/src/tests/api_tests/time_tracks.test.ts +542 -16
  66. package/src/tests/tests.ts +34 -5
  67. package/test_generated.pdf +0 -0
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.email_utils_tests = void 0;
40
+ require('source-map-support').install();
41
+ var testing_1 = require("@tellescope/testing");
42
+ var utilities_1 = require("@tellescope/utilities");
43
+ var expectThrows = function (fn, name, errorPattern) {
44
+ var threw = false;
45
+ var err = null;
46
+ try {
47
+ fn();
48
+ }
49
+ catch (e) {
50
+ threw = true;
51
+ err = e;
52
+ }
53
+ (0, testing_1.assert)(threw && (!errorPattern || errorPattern.test((err === null || err === void 0 ? void 0 : err.message) || String(err))), "expected throw".concat(errorPattern ? " matching ".concat(errorPattern) : '', ", got ").concat(threw ? err === null || err === void 0 ? void 0 : err.message : 'no throw'), name);
54
+ };
55
+ var expectEqual = function (actual, expected, name) {
56
+ return (0, testing_1.assert)(actual === expected, "expected ".concat(JSON.stringify(expected), ", got ").concat(JSON.stringify(actual)), name);
57
+ };
58
+ var expectMatch = function (regex, value, name) {
59
+ return (0, testing_1.assert)(regex.test(value), "expected ".concat(regex, " to match \"").concat(value, "\""), name);
60
+ };
61
+ var expectNoMatch = function (regex, value, name) {
62
+ return (0, testing_1.assert)(!regex.test(value), "expected ".concat(regex, " NOT to match \"").concat(value, "\""), name);
63
+ };
64
+ var email_utils_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
65
+ var r, rDot, rDomain, rMulti, fromBase, fromTagged, validEmails, _i, validEmails_1, e, re;
66
+ return __generator(this, function (_a) {
67
+ (0, testing_1.log_header)("Email Utils (getBaseEmail / buildPlusAddressRegex)");
68
+ // ====================== getBaseEmail — happy path ======================
69
+ expectEqual((0, utilities_1.getBaseEmail)('user@example.com'), 'user@example.com', 'getBaseEmail: passthrough on plain email');
70
+ expectEqual((0, utilities_1.getBaseEmail)('user+1@example.com'), 'user@example.com', 'getBaseEmail: strips single plus tag');
71
+ expectEqual((0, utilities_1.getBaseEmail)('user+a+b+c@example.com'), 'user@example.com', 'getBaseEmail: strips everything after first +');
72
+ expectEqual((0, utilities_1.getBaseEmail)('User+Tag@Example.COM'), 'user@example.com', 'getBaseEmail: lowercases input');
73
+ expectEqual((0, utilities_1.getBaseEmail)('user+@example.com'), 'user@example.com', 'getBaseEmail: handles empty plus tag');
74
+ // ====================== getBaseEmail — defensive ======================
75
+ expectThrows(function () { return (0, utilities_1.getBaseEmail)('noatsign'); }, 'getBaseEmail: throws on missing @', /Invalid email/);
76
+ expectThrows(function () { return (0, utilities_1.getBaseEmail)(''); }, 'getBaseEmail: throws on empty string', /Invalid email/);
77
+ expectThrows(function () { return (0, utilities_1.getBaseEmail)('@example.com'); }, 'getBaseEmail: throws on empty local part', /Invalid email/);
78
+ expectThrows(function () { return (0, utilities_1.getBaseEmail)('user@'); }, 'getBaseEmail: throws on empty domain', /Invalid email/);
79
+ // Multi-@ inputs: the FIRST @ is the boundary — proves we don't silently drop trailing @s
80
+ expectEqual((0, utilities_1.getBaseEmail)('foo@bar@baz.com'), 'foo@bar@baz.com', 'getBaseEmail: multi-@ uses first @ as boundary, preserves rest as domain');
81
+ expectEqual((0, utilities_1.getBaseEmail)('"weird@local"@example.com'), '"weird@local"@example.com', 'getBaseEmail: quoted-local style preserves full domain');
82
+ r = (0, utilities_1.buildPlusAddressRegex)('user@example.com');
83
+ expectMatch(r, 'user@example.com', 'regex matches base email');
84
+ expectMatch(r, 'user+1@example.com', 'regex matches plus variant');
85
+ expectMatch(r, 'user+anything-here@example.com', 'regex matches arbitrary plus tag');
86
+ expectMatch(r, 'USER+abc@EXAMPLE.com', 'regex is case-insensitive');
87
+ expectMatch(r, 'user+@example.com', 'regex matches empty plus tag (gap 3 fix)');
88
+ rDot = (0, utilities_1.buildPlusAddressRegex)('a.b@example.com');
89
+ expectMatch(rDot, 'a.b@example.com', 'regex matches literal . in local');
90
+ expectMatch(rDot, 'a.b+tag@example.com', 'regex matches plus variant of dotted local');
91
+ expectNoMatch(rDot, 'aXb@example.com', 'regex does NOT treat . as wildcard in local');
92
+ rDomain = (0, utilities_1.buildPlusAddressRegex)('user@ex.am-ple.com');
93
+ expectMatch(rDomain, 'user@ex.am-ple.com', 'regex matches literal . and - in domain');
94
+ expectNoMatch(rDomain, 'user@exXamXple.com', 'regex does NOT treat . as wildcard in domain');
95
+ // ====================== buildPlusAddressRegex — non-matches ======================
96
+ expectNoMatch(r, 'prefixuser@example.com', 'regex is anchored at start (no prefix match)');
97
+ expectNoMatch(r, 'user@example.com.evil', 'regex is anchored at end (no suffix match)');
98
+ expectNoMatch(r, 'user@other.com', 'regex rejects different domain');
99
+ expectNoMatch(r, 'other@example.com', 'regex rejects different local');
100
+ expectNoMatch(r, 'user+tag@example.com.evil', 'regex rejects suffixed domain even with plus tag');
101
+ expectNoMatch(r, 'usertag@example.com', 'regex requires + before tag (not bare suffix)');
102
+ rMulti = (0, utilities_1.buildPlusAddressRegex)('foo@bar@baz.com');
103
+ expectMatch(rMulti, 'foo@bar@baz.com', 'multi-@ regex matches its own input (domain preserved)');
104
+ expectNoMatch(rMulti, 'foo@baz.com', 'multi-@ regex does NOT match a stripped-down domain (proves we did not drop the second @)');
105
+ fromBase = (0, utilities_1.buildPlusAddressRegex)('user@example.com');
106
+ fromTagged = (0, utilities_1.buildPlusAddressRegex)('user+already@example.com');
107
+ expectEqual(fromBase.source, fromTagged.source, 'buildPlusAddressRegex: tagged input produces same regex as base input');
108
+ expectMatch(fromTagged, 'user+anything@example.com', 'regex from tagged input matches OTHER plus variants (not just the original tag)');
109
+ expectMatch(fromTagged, 'user@example.com', 'regex from tagged input still matches the bare base email');
110
+ // ====================== buildPlusAddressRegex — defensive ======================
111
+ expectThrows(function () { return (0, utilities_1.buildPlusAddressRegex)('noatsign'); }, 'buildPlusAddressRegex: throws on missing @', /Invalid email/);
112
+ expectThrows(function () { return (0, utilities_1.buildPlusAddressRegex)(''); }, 'buildPlusAddressRegex: throws on empty string', /Invalid email/);
113
+ validEmails = [
114
+ 'user@example.com',
115
+ 'user+1@example.com',
116
+ 'User+Tag@Example.com',
117
+ 'a.b.c@sub.example.co.uk',
118
+ 'user+@example.com',
119
+ 'user+a+b+c@example.com',
120
+ ];
121
+ for (_i = 0, validEmails_1 = validEmails; _i < validEmails_1.length; _i++) {
122
+ e = validEmails_1[_i];
123
+ re = (0, utilities_1.buildPlusAddressRegex)((0, utilities_1.getBaseEmail)(e));
124
+ (0, testing_1.assert)(re.test(e), "round-trip failed: regex from getBaseEmail(\"".concat(e, "\") did not match \"").concat(e, "\""), "round-trip: buildPlusAddressRegex(getBaseEmail(\"".concat(e, "\")) matches \"").concat(e, "\""));
125
+ }
126
+ return [2 /*return*/];
127
+ });
128
+ }); };
129
+ exports.email_utils_tests = email_utils_tests;
130
+ if (require.main === module) {
131
+ (0, exports.email_utils_tests)()
132
+ .then(function () {
133
+ console.log("✅ Email utils test suite completed successfully");
134
+ process.exit(0);
135
+ })
136
+ .catch(function (error) {
137
+ console.error("❌ Email utils test suite failed:", error);
138
+ process.exit(1);
139
+ });
140
+ }
141
+ //# sourceMappingURL=email_utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email_utils.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/email_utils.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC;AAExC,+CAAwD;AACxD,mDAA2E;AAE3E,IAAM,YAAY,GAAG,UAAC,EAAa,EAAE,IAAY,EAAE,YAAqB;IACtE,IAAI,KAAK,GAAG,KAAK,CAAA;IACjB,IAAI,GAAG,GAAQ,IAAI,CAAA;IACnB,IAAI;QAAE,EAAE,EAAE,CAAA;KAAE;IAAC,OAAO,CAAC,EAAE;QAAE,KAAK,GAAG,IAAI,CAAC;QAAC,GAAG,GAAG,CAAC,CAAA;KAAE;IAChD,IAAA,gBAAM,EACJ,KAAK,IAAI,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,KAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAC1E,wBAAiB,YAAY,CAAC,CAAC,CAAC,oBAAa,YAAY,CAAE,CAAC,CAAC,CAAC,EAAE,mBAAS,KAAK,CAAC,CAAC,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAE,EAC5G,IAAI,CACL,CAAA;AACH,CAAC,CAAA;AAED,IAAM,WAAW,GAAG,UAAI,MAAS,EAAE,QAAW,EAAE,IAAY;IAC1D,OAAA,IAAA,gBAAM,EAAC,MAAM,KAAK,QAAQ,EAAE,mBAAY,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAS,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAE,EAAE,IAAI,CAAC;AAAxG,CAAwG,CAAA;AAE1G,IAAM,WAAW,GAAG,UAAC,KAAa,EAAE,KAAa,EAAE,IAAY;IAC7D,OAAA,IAAA,gBAAM,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,mBAAY,KAAK,yBAAc,KAAK,OAAG,EAAE,IAAI,CAAC;AAAxE,CAAwE,CAAA;AAE1E,IAAM,aAAa,GAAG,UAAC,KAAa,EAAE,KAAa,EAAE,IAAY;IAC/D,OAAA,IAAA,gBAAM,EAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,mBAAY,KAAK,6BAAkB,KAAK,OAAG,EAAE,IAAI,CAAC;AAA7E,CAA6E,CAAA;AAExE,IAAM,iBAAiB,GAAG;;;QAC/B,IAAA,oBAAU,EAAC,oDAAoD,CAAC,CAAA;QAEhE,0EAA0E;QAC1E,WAAW,CAAC,IAAA,wBAAY,EAAC,kBAAkB,CAAC,EAAE,kBAAkB,EAC9D,0CAA0C,CAAC,CAAA;QAC7C,WAAW,CAAC,IAAA,wBAAY,EAAC,oBAAoB,CAAC,EAAE,kBAAkB,EAChE,sCAAsC,CAAC,CAAA;QACzC,WAAW,CAAC,IAAA,wBAAY,EAAC,wBAAwB,CAAC,EAAE,kBAAkB,EACpE,+CAA+C,CAAC,CAAA;QAClD,WAAW,CAAC,IAAA,wBAAY,EAAC,sBAAsB,CAAC,EAAE,kBAAkB,EAClE,gCAAgC,CAAC,CAAA;QACnC,WAAW,CAAC,IAAA,wBAAY,EAAC,mBAAmB,CAAC,EAAE,kBAAkB,EAC/D,sCAAsC,CAAC,CAAA;QAEzC,yEAAyE;QACzE,YAAY,CAAC,cAAM,OAAA,IAAA,wBAAY,EAAC,UAAU,CAAC,EAAxB,CAAwB,EAAE,mCAAmC,EAAE,eAAe,CAAC,CAAA;QAClG,YAAY,CAAC,cAAM,OAAA,IAAA,wBAAY,EAAC,EAAE,CAAC,EAAhB,CAAgB,EAAE,sCAAsC,EAAE,eAAe,CAAC,CAAA;QAC7F,YAAY,CAAC,cAAM,OAAA,IAAA,wBAAY,EAAC,cAAc,CAAC,EAA5B,CAA4B,EAAE,0CAA0C,EAAE,eAAe,CAAC,CAAA;QAC7G,YAAY,CAAC,cAAM,OAAA,IAAA,wBAAY,EAAC,OAAO,CAAC,EAArB,CAAqB,EAAE,sCAAsC,EAAE,eAAe,CAAC,CAAA;QAElG,0FAA0F;QAC1F,WAAW,CAAC,IAAA,wBAAY,EAAC,iBAAiB,CAAC,EAAE,iBAAiB,EAC5D,0EAA0E,CAAC,CAAA;QAC7E,WAAW,CAAC,IAAA,wBAAY,EAAC,2BAA2B,CAAC,EAAE,2BAA2B,EAChF,wDAAwD,CAAC,CAAA;QAGrD,CAAC,GAAG,IAAA,iCAAqB,EAAC,kBAAkB,CAAC,CAAA;QACnD,WAAW,CAAC,CAAC,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,CAAA;QAC9D,WAAW,CAAC,CAAC,EAAE,oBAAoB,EAAE,4BAA4B,CAAC,CAAA;QAClE,WAAW,CAAC,CAAC,EAAE,gCAAgC,EAAE,kCAAkC,CAAC,CAAA;QACpF,WAAW,CAAC,CAAC,EAAE,sBAAsB,EAAE,2BAA2B,CAAC,CAAA;QACnE,WAAW,CAAC,CAAC,EAAE,mBAAmB,EAAE,0CAA0C,CAAC,CAAA;QAGzE,IAAI,GAAG,IAAA,iCAAqB,EAAC,iBAAiB,CAAC,CAAA;QACrD,WAAW,CAAC,IAAI,EAAE,iBAAiB,EAAE,kCAAkC,CAAC,CAAA;QACxE,WAAW,CAAC,IAAI,EAAE,qBAAqB,EAAE,4CAA4C,CAAC,CAAA;QACtF,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,6CAA6C,CAAC,CAAA;QAG/E,OAAO,GAAG,IAAA,iCAAqB,EAAC,oBAAoB,CAAC,CAAA;QAC3D,WAAW,CAAC,OAAO,EAAE,oBAAoB,EAAE,yCAAyC,CAAC,CAAA;QACrF,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,8CAA8C,CAAC,CAAA;QAE5F,oFAAoF;QACpF,aAAa,CAAC,CAAC,EAAE,wBAAwB,EAAE,8CAA8C,CAAC,CAAA;QAC1F,aAAa,CAAC,CAAC,EAAE,uBAAuB,EAAE,4CAA4C,CAAC,CAAA;QACvF,aAAa,CAAC,CAAC,EAAE,gBAAgB,EAAE,gCAAgC,CAAC,CAAA;QACpE,aAAa,CAAC,CAAC,EAAE,mBAAmB,EAAE,+BAA+B,CAAC,CAAA;QACtE,aAAa,CAAC,CAAC,EAAE,2BAA2B,EAAE,kDAAkD,CAAC,CAAA;QACjG,aAAa,CAAC,CAAC,EAAE,qBAAqB,EAAE,+CAA+C,CAAC,CAAA;QAGlF,MAAM,GAAG,IAAA,iCAAqB,EAAC,iBAAiB,CAAC,CAAA;QACvD,WAAW,CAAC,MAAM,EAAE,iBAAiB,EACnC,wDAAwD,CAAC,CAAA;QAC3D,aAAa,CAAC,MAAM,EAAE,aAAa,EACjC,2FAA2F,CAAC,CAAA;QAIxF,QAAQ,GAAG,IAAA,iCAAqB,EAAC,kBAAkB,CAAC,CAAA;QACpD,UAAU,GAAG,IAAA,iCAAqB,EAAC,0BAA0B,CAAC,CAAA;QACpE,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAC5C,uEAAuE,CAAC,CAAA;QAC1E,WAAW,CAAC,UAAU,EAAE,2BAA2B,EACjD,iFAAiF,CAAC,CAAA;QACpF,WAAW,CAAC,UAAU,EAAE,kBAAkB,EACxC,2DAA2D,CAAC,CAAA;QAE9D,kFAAkF;QAClF,YAAY,CAAC,cAAM,OAAA,IAAA,iCAAqB,EAAC,UAAU,CAAC,EAAjC,CAAiC,EAClD,4CAA4C,EAAE,eAAe,CAAC,CAAA;QAChE,YAAY,CAAC,cAAM,OAAA,IAAA,iCAAqB,EAAC,EAAE,CAAC,EAAzB,CAAyB,EAC1C,+CAA+C,EAAE,eAAe,CAAC,CAAA;QAG7D,WAAW,GAAG;YAClB,kBAAkB;YAClB,oBAAoB;YACpB,sBAAsB;YACtB,yBAAyB;YACzB,mBAAmB;YACnB,wBAAwB;SACzB,CAAA;QACD,WAA2B,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW,EAAE;YAAlB,CAAC;YACJ,EAAE,GAAG,IAAA,iCAAqB,EAAC,IAAA,wBAAY,EAAC,CAAC,CAAC,CAAC,CAAA;YACjD,IAAA,gBAAM,EAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EACf,uDAA+C,CAAC,iCAAqB,CAAC,OAAG,EACzE,2DAAmD,CAAC,4BAAgB,CAAC,OAAG,CAAC,CAAA;SAC5E;;;KACF,CAAA;AA7FY,QAAA,iBAAiB,qBA6F7B;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IAC3B,IAAA,yBAAiB,GAAE;SAChB,IAAI,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC;SACD,KAAK,CAAC,UAAC,KAAK;QACX,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAA;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;CACL"}
@@ -0,0 +1,6 @@
1
+ import { Session } from "../../sdk";
2
+ export declare const organization_settings_duplicates_tests: ({ sdk, sdkNonAdmin }: {
3
+ sdk: Session;
4
+ sdkNonAdmin: Session;
5
+ }) => Promise<void>;
6
+ //# sourceMappingURL=organization_settings_duplicates.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization_settings_duplicates.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/organization_settings_duplicates.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,eAAO,MAAM,sCAAsC;SAAwC,OAAO;iBAAe,OAAO;mBAuKvH,CAAA"}
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.organization_settings_duplicates_tests = void 0;
40
+ require('source-map-support').install();
41
+ var sdk_1 = require("../../sdk");
42
+ var testing_1 = require("@tellescope/testing");
43
+ var setup_1 = require("../setup");
44
+ var host = process.env.API_URL || 'http://localhost:8080';
45
+ var organization_settings_duplicates_tests = function (_a) {
46
+ var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
47
+ return __awaiter(void 0, void 0, void 0, function () {
48
+ var orgId;
49
+ return __generator(this, function (_b) {
50
+ switch (_b.label) {
51
+ case 0:
52
+ (0, testing_1.log_header)("Organization Settings Duplicate Validation Tests");
53
+ orgId = sdk.userInfo.businessId;
54
+ // === A. replaceObjectFields: false (merge/push behavior) ===
55
+ // A1. Duplicate tags via merge
56
+ return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
57
+ settings: { endusers: { tags: ['tag1', 'tag2'] } }
58
+ }, { replaceObjectFields: true })];
59
+ case 1:
60
+ // === A. replaceObjectFields: false (merge/push behavior) ===
61
+ // A1. Duplicate tags via merge
62
+ _b.sent();
63
+ return [4 /*yield*/, (0, testing_1.async_test)("Merge tags rejects duplicates (tag2 appears in both old and new)", function () { return sdk.api.organizations.updateOne(orgId, {
64
+ settings: { endusers: { tags: ['tag2', 'tag3'] } }
65
+ }); }, { shouldError: true, onError: function (e) { return e.message.includes('Duplicate value in settings.endusers.tags'); } })
66
+ // A2. Duplicate customFields via merge
67
+ ];
68
+ case 2:
69
+ _b.sent();
70
+ // A2. Duplicate customFields via merge
71
+ return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
72
+ settings: { endusers: { customFields: [{ type: 'Text', field: 'myField', info: {} }] } }
73
+ }, { replaceObjectFields: true })];
74
+ case 3:
75
+ // A2. Duplicate customFields via merge
76
+ _b.sent();
77
+ return [4 /*yield*/, (0, testing_1.async_test)("Merge customFields rejects duplicate field name", function () { return sdk.api.organizations.updateOne(orgId, {
78
+ settings: { endusers: { customFields: [{ type: 'Text', field: 'myField', info: {} }] } }
79
+ }); }, { shouldError: true, onError: function (e) { return e.message.includes('Duplicate field in settings.endusers.customFields'); } })
80
+ // A3. Duplicate builtinFields via merge
81
+ ];
82
+ case 4:
83
+ _b.sent();
84
+ // A3. Duplicate builtinFields via merge
85
+ return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
86
+ settings: { endusers: { builtinFields: [{ field: 'fname', label: 'First Name' }] } }
87
+ }, { replaceObjectFields: true })];
88
+ case 5:
89
+ // A3. Duplicate builtinFields via merge
90
+ _b.sent();
91
+ return [4 /*yield*/, (0, testing_1.async_test)("Merge builtinFields rejects duplicate field name", function () { return sdk.api.organizations.updateOne(orgId, {
92
+ settings: { endusers: { builtinFields: [{ field: 'fname', label: 'First Name Copy' }] } }
93
+ }); }, { shouldError: true, onError: function (e) { return e.message.includes('Duplicate field in settings.endusers.builtinFields'); } })
94
+ // A4. Duplicate dontRecordCallsToPhone via merge
95
+ ];
96
+ case 6:
97
+ _b.sent();
98
+ // A4. Duplicate dontRecordCallsToPhone via merge
99
+ return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
100
+ settings: { endusers: { dontRecordCallsToPhone: ['+15551234567'] } }
101
+ }, { replaceObjectFields: true })];
102
+ case 7:
103
+ // A4. Duplicate dontRecordCallsToPhone via merge
104
+ _b.sent();
105
+ return [4 /*yield*/, (0, testing_1.async_test)("Merge dontRecordCallsToPhone rejects duplicates", function () { return sdk.api.organizations.updateOne(orgId, {
106
+ settings: { endusers: { dontRecordCallsToPhone: ['+15551234567'] } }
107
+ }); }, { shouldError: true, onError: function (e) { return e.message.includes('Duplicate value in settings.endusers.dontRecordCallsToPhone'); } })
108
+ // A5. Duplicate cancelReasons via merge
109
+ ];
110
+ case 8:
111
+ _b.sent();
112
+ // A5. Duplicate cancelReasons via merge
113
+ return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
114
+ settings: { calendar: { cancelReasons: ['No show'] } }
115
+ }, { replaceObjectFields: true })];
116
+ case 9:
117
+ // A5. Duplicate cancelReasons via merge
118
+ _b.sent();
119
+ return [4 /*yield*/, (0, testing_1.async_test)("Merge cancelReasons rejects duplicates", function () { return sdk.api.organizations.updateOne(orgId, {
120
+ settings: { calendar: { cancelReasons: ['No show'] } }
121
+ }); }, { shouldError: true, onError: function (e) { return e.message.includes('Duplicate value in settings.calendar.cancelReasons'); } })
122
+ // === B. replaceObjectFields: true (full replacement) ===
123
+ // B1. Replace that grows the array with dupes should be rejected
124
+ ];
125
+ case 10:
126
+ _b.sent();
127
+ // === B. replaceObjectFields: true (full replacement) ===
128
+ // B1. Replace that grows the array with dupes should be rejected
129
+ return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
130
+ settings: { endusers: { tags: ['tag1'] } }
131
+ }, { replaceObjectFields: true })];
132
+ case 11:
133
+ // === B. replaceObjectFields: true (full replacement) ===
134
+ // B1. Replace that grows the array with dupes should be rejected
135
+ _b.sent();
136
+ return [4 /*yield*/, (0, testing_1.async_test)("Replace tags rejects duplicates when array grows", function () { return sdk.api.organizations.updateOne(orgId, {
137
+ settings: { endusers: { tags: ['tag1', 'tag1', 'tag2'] } }
138
+ }, { replaceObjectFields: true }); }, { shouldError: true, onError: function (e) { return e.message.includes('Duplicate value in settings.endusers.tags'); } })
139
+ // B2. Replace with dupes that shrinks the array should be allowed
140
+ ];
141
+ case 12:
142
+ _b.sent();
143
+ // B2. Replace with dupes that shrinks the array should be allowed
144
+ return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
145
+ settings: { endusers: { tags: ['a', 'b', 'c'] } }
146
+ }, { replaceObjectFields: true })];
147
+ case 13:
148
+ // B2. Replace with dupes that shrinks the array should be allowed
149
+ _b.sent();
150
+ return [4 /*yield*/, (0, testing_1.async_test)("Replace with dupes that shrinks array succeeds", function () { return sdk.api.organizations.updateOne(orgId, {
151
+ settings: { endusers: { tags: ['a', 'a'] } }
152
+ }, { replaceObjectFields: true }); }, { shouldError: false, onResult: function () { return true; } })
153
+ // B3. Replace with unique values always succeeds
154
+ ];
155
+ case 14:
156
+ _b.sent();
157
+ // B3. Replace with unique values always succeeds
158
+ return [4 /*yield*/, (0, testing_1.async_test)("Replace tags succeeds with unique values", function () { return sdk.api.organizations.updateOne(orgId, {
159
+ settings: { endusers: { tags: ['tag1', 'tag2'] } }
160
+ }, { replaceObjectFields: true }); }, { shouldError: false, onResult: function () { return true; } })
161
+ // === C. Non-duplicate updates still succeed ===
162
+ // C1. Set initial tags then add different tags via merge
163
+ ];
164
+ case 15:
165
+ // B3. Replace with unique values always succeeds
166
+ _b.sent();
167
+ // === C. Non-duplicate updates still succeed ===
168
+ // C1. Set initial tags then add different tags via merge
169
+ return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
170
+ settings: { endusers: { tags: ['tagA', 'tagB'] } }
171
+ }, { replaceObjectFields: true })];
172
+ case 16:
173
+ // === C. Non-duplicate updates still succeed ===
174
+ // C1. Set initial tags then add different tags via merge
175
+ _b.sent();
176
+ return [4 /*yield*/, (0, testing_1.async_test)("Merge with unique new tags succeeds", function () { return sdk.api.organizations.updateOne(orgId, {
177
+ settings: { endusers: { tags: ['tagC', 'tagD'] } }
178
+ }); }, { shouldError: false, onResult: function () { return true; } })
179
+ // C2. Replace with unique values
180
+ ];
181
+ case 17:
182
+ _b.sent();
183
+ // C2. Replace with unique values
184
+ return [4 /*yield*/, (0, testing_1.async_test)("Replace customFields with unique values succeeds", function () { return sdk.api.organizations.updateOne(orgId, {
185
+ settings: { endusers: { customFields: [
186
+ { type: 'Text', field: 'field1', info: {} },
187
+ { type: 'Text', field: 'field2', info: {} },
188
+ ] } }
189
+ }, { replaceObjectFields: true }); }, { shouldError: false, onResult: function () { return true; } })
190
+ // C3. Updating another settings field preserves pre-existing duplicates
191
+ // First set tags to a longer array, then shrink to a dupe array (shrinking is allowed)
192
+ ];
193
+ case 18:
194
+ // C2. Replace with unique values
195
+ _b.sent();
196
+ // C3. Updating another settings field preserves pre-existing duplicates
197
+ // First set tags to a longer array, then shrink to a dupe array (shrinking is allowed)
198
+ return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
199
+ settings: { endusers: { tags: ['dupeTag', 'otherTag', 'anotherTag'] } }
200
+ }, { replaceObjectFields: true })];
201
+ case 19:
202
+ // C3. Updating another settings field preserves pre-existing duplicates
203
+ // First set tags to a longer array, then shrink to a dupe array (shrinking is allowed)
204
+ _b.sent();
205
+ return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
206
+ settings: { endusers: { tags: ['dupeTag', 'dupeTag'] } }
207
+ }, { replaceObjectFields: true })];
208
+ case 20:
209
+ _b.sent();
210
+ return [4 /*yield*/, (0, testing_1.async_test)("Updating cancelReasons succeeds even when tags has pre-existing duplicates", function () { return sdk.api.organizations.updateOne(orgId, {
211
+ settings: { calendar: { cancelReasons: ['new reason'] } }
212
+ }, { replaceObjectFields: true }); }, { shouldError: false, onResult: function () { return true; } })
213
+ // Clean up settings to avoid affecting other tests
214
+ ];
215
+ case 21:
216
+ _b.sent();
217
+ // Clean up settings to avoid affecting other tests
218
+ return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
219
+ settings: {
220
+ endusers: {
221
+ tags: [],
222
+ customFields: [],
223
+ builtinFields: [],
224
+ dontRecordCallsToPhone: [],
225
+ },
226
+ calendar: {
227
+ cancelReasons: [],
228
+ },
229
+ }
230
+ }, { replaceObjectFields: true })];
231
+ case 22:
232
+ // Clean up settings to avoid affecting other tests
233
+ _b.sent();
234
+ return [2 /*return*/];
235
+ }
236
+ });
237
+ });
238
+ };
239
+ exports.organization_settings_duplicates_tests = organization_settings_duplicates_tests;
240
+ // Allow running this test file independently
241
+ if (require.main === module) {
242
+ console.log("Using API URL: ".concat(host));
243
+ var sdk_2 = new sdk_1.Session({ host: host });
244
+ var sdkNonAdmin_1 = new sdk_1.Session({ host: host });
245
+ var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
246
+ return __generator(this, function (_a) {
247
+ switch (_a.label) {
248
+ case 0: return [4 /*yield*/, (0, setup_1.setup_tests)(sdk_2, sdkNonAdmin_1)];
249
+ case 1:
250
+ _a.sent();
251
+ return [4 /*yield*/, (0, exports.organization_settings_duplicates_tests)({ sdk: sdk_2, sdkNonAdmin: sdkNonAdmin_1 })];
252
+ case 2:
253
+ _a.sent();
254
+ return [2 /*return*/];
255
+ }
256
+ });
257
+ }); };
258
+ runTests()
259
+ .then(function () {
260
+ console.log("✅ Organization settings duplicate validation tests completed successfully");
261
+ process.exit(0);
262
+ })
263
+ .catch(function (error) {
264
+ console.error("❌ Organization settings duplicate validation tests failed:", error);
265
+ process.exit(1);
266
+ });
267
+ }
268
+ //# sourceMappingURL=organization_settings_duplicates.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization_settings_duplicates.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/organization_settings_duplicates.test.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,24 @@ export declare const time_tracks_tests: ({ sdk, sdkNonAdmin }: {
3
3
  sdk: Session;
4
4
  sdkNonAdmin: Session;
5
5
  }) => Promise<void>;
6
+ export declare const time_tracks_historical_tests: ({ sdk, sdkNonAdmin }: {
7
+ sdk: Session;
8
+ sdkNonAdmin: Session;
9
+ }) => Promise<void>;
10
+ export declare const time_tracks_correction_tests: ({ sdk, sdkNonAdmin }: {
11
+ sdk: Session;
12
+ sdkNonAdmin: Session;
13
+ }) => Promise<void>;
14
+ export declare const time_tracks_review_tests: ({ sdk, sdkNonAdmin }: {
15
+ sdk: Session;
16
+ sdkNonAdmin: Session;
17
+ }) => Promise<void>;
18
+ export declare const time_tracks_lock_tests: ({ sdk, sdkNonAdmin }: {
19
+ sdk: Session;
20
+ sdkNonAdmin: Session;
21
+ }) => Promise<void>;
22
+ export declare const time_tracks_edge_case_tests: ({ sdk, sdkNonAdmin }: {
23
+ sdk: Session;
24
+ sdkNonAdmin: Session;
25
+ }) => Promise<void>;
6
26
  //# sourceMappingURL=time_tracks.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"time_tracks.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/time_tracks.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAsEnC,eAAO,MAAM,iBAAiB;SAAuC,OAAO;iBAAe,OAAO;mBA0JjG,CAAA"}
1
+ {"version":3,"file":"time_tracks.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/time_tracks.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAkFnC,eAAO,MAAM,iBAAiB;SAAuC,OAAO;iBAAe,OAAO;mBA0JjG,CAAA;AAKD,eAAO,MAAM,4BAA4B;SAAuC,OAAO;iBAAe,OAAO;mBAoF5G,CAAA;AAKD,eAAO,MAAM,4BAA4B;SAAuC,OAAO;iBAAe,OAAO;mBAsH5G,CAAA;AAKD,eAAO,MAAM,wBAAwB;SAAuC,OAAO;iBAAe,OAAO;mBA+GxG,CAAA;AAKD,eAAO,MAAM,sBAAsB;SAAuC,OAAO;iBAAe,OAAO;mBAqGtG,CAAA;AAKD,eAAO,MAAM,2BAA2B;SAAuC,OAAO;iBAAe,OAAO;mBAsE3G,CAAA"}