@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.
- package/lib/cjs/tests/api_tests/account_switcher.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/account_switcher.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/account_switcher.test.js +445 -0
- package/lib/cjs/tests/api_tests/account_switcher.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/beluga_pharmacy_mappings.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/beluga_pharmacy_mappings.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/beluga_pharmacy_mappings.test.js +357 -0
- package/lib/cjs/tests/api_tests/beluga_pharmacy_mappings.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/calendar_event_limits.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/calendar_event_limits.test.js +163 -0
- package/lib/cjs/tests/api_tests/calendar_event_limits.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/calendar_events_bulk_update.test.d.ts +5 -0
- package/lib/cjs/tests/api_tests/calendar_events_bulk_update.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/calendar_events_bulk_update.test.js +483 -0
- package/lib/cjs/tests/api_tests/calendar_events_bulk_update.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/email_utils.test.d.ts +2 -0
- package/lib/cjs/tests/api_tests/email_utils.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/email_utils.test.js +141 -0
- package/lib/cjs/tests/api_tests/email_utils.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js +268 -0
- package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/time_tracks.test.d.ts +20 -0
- package/lib/cjs/tests/api_tests/time_tracks.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/time_tracks.test.js +692 -20
- package/lib/cjs/tests/api_tests/time_tracks.test.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +157 -122
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/tests/api_tests/account_switcher.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/account_switcher.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/account_switcher.test.js +438 -0
- package/lib/esm/tests/api_tests/account_switcher.test.js.map +1 -0
- package/lib/esm/tests/api_tests/beluga_pharmacy_mappings.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/beluga_pharmacy_mappings.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/beluga_pharmacy_mappings.test.js +353 -0
- package/lib/esm/tests/api_tests/beluga_pharmacy_mappings.test.js.map +1 -0
- package/lib/esm/tests/api_tests/calendar_event_limits.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/calendar_event_limits.test.js +163 -0
- package/lib/esm/tests/api_tests/calendar_event_limits.test.js.map +1 -1
- package/lib/esm/tests/api_tests/calendar_events_bulk_update.test.d.ts +5 -0
- package/lib/esm/tests/api_tests/calendar_events_bulk_update.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/calendar_events_bulk_update.test.js +479 -0
- package/lib/esm/tests/api_tests/calendar_events_bulk_update.test.js.map +1 -0
- package/lib/esm/tests/api_tests/email_utils.test.d.ts +2 -0
- package/lib/esm/tests/api_tests/email_utils.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/email_utils.test.js +137 -0
- package/lib/esm/tests/api_tests/email_utils.test.js.map +1 -0
- package/lib/esm/tests/api_tests/organization_settings_duplicates.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js +264 -0
- package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js.map +1 -0
- package/lib/esm/tests/api_tests/time_tracks.test.d.ts +20 -0
- package/lib/esm/tests/api_tests/time_tracks.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/time_tracks.test.js +687 -20
- package/lib/esm/tests/api_tests/time_tracks.test.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +158 -123
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/tests/api_tests/beluga_pharmacy_mappings.test.ts +351 -0
- package/src/tests/api_tests/calendar_event_limits.test.ts +195 -0
- package/src/tests/api_tests/time_tracks.test.ts +542 -16
- package/src/tests/tests.ts +34 -5
- package/test_generated.pdf +0 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
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;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
require('source-map-support').install();
|
|
38
|
+
import { assert, log_header } from "@tellescope/testing";
|
|
39
|
+
import { getBaseEmail, buildPlusAddressRegex } from "@tellescope/utilities";
|
|
40
|
+
var expectThrows = function (fn, name, errorPattern) {
|
|
41
|
+
var threw = false;
|
|
42
|
+
var err = null;
|
|
43
|
+
try {
|
|
44
|
+
fn();
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
threw = true;
|
|
48
|
+
err = e;
|
|
49
|
+
}
|
|
50
|
+
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);
|
|
51
|
+
};
|
|
52
|
+
var expectEqual = function (actual, expected, name) {
|
|
53
|
+
return assert(actual === expected, "expected ".concat(JSON.stringify(expected), ", got ").concat(JSON.stringify(actual)), name);
|
|
54
|
+
};
|
|
55
|
+
var expectMatch = function (regex, value, name) {
|
|
56
|
+
return assert(regex.test(value), "expected ".concat(regex, " to match \"").concat(value, "\""), name);
|
|
57
|
+
};
|
|
58
|
+
var expectNoMatch = function (regex, value, name) {
|
|
59
|
+
return assert(!regex.test(value), "expected ".concat(regex, " NOT to match \"").concat(value, "\""), name);
|
|
60
|
+
};
|
|
61
|
+
export var email_utils_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
62
|
+
var r, rDot, rDomain, rMulti, fromBase, fromTagged, validEmails, _i, validEmails_1, e, re;
|
|
63
|
+
return __generator(this, function (_a) {
|
|
64
|
+
log_header("Email Utils (getBaseEmail / buildPlusAddressRegex)");
|
|
65
|
+
// ====================== getBaseEmail — happy path ======================
|
|
66
|
+
expectEqual(getBaseEmail('user@example.com'), 'user@example.com', 'getBaseEmail: passthrough on plain email');
|
|
67
|
+
expectEqual(getBaseEmail('user+1@example.com'), 'user@example.com', 'getBaseEmail: strips single plus tag');
|
|
68
|
+
expectEqual(getBaseEmail('user+a+b+c@example.com'), 'user@example.com', 'getBaseEmail: strips everything after first +');
|
|
69
|
+
expectEqual(getBaseEmail('User+Tag@Example.COM'), 'user@example.com', 'getBaseEmail: lowercases input');
|
|
70
|
+
expectEqual(getBaseEmail('user+@example.com'), 'user@example.com', 'getBaseEmail: handles empty plus tag');
|
|
71
|
+
// ====================== getBaseEmail — defensive ======================
|
|
72
|
+
expectThrows(function () { return getBaseEmail('noatsign'); }, 'getBaseEmail: throws on missing @', /Invalid email/);
|
|
73
|
+
expectThrows(function () { return getBaseEmail(''); }, 'getBaseEmail: throws on empty string', /Invalid email/);
|
|
74
|
+
expectThrows(function () { return getBaseEmail('@example.com'); }, 'getBaseEmail: throws on empty local part', /Invalid email/);
|
|
75
|
+
expectThrows(function () { return getBaseEmail('user@'); }, 'getBaseEmail: throws on empty domain', /Invalid email/);
|
|
76
|
+
// Multi-@ inputs: the FIRST @ is the boundary — proves we don't silently drop trailing @s
|
|
77
|
+
expectEqual(getBaseEmail('foo@bar@baz.com'), 'foo@bar@baz.com', 'getBaseEmail: multi-@ uses first @ as boundary, preserves rest as domain');
|
|
78
|
+
expectEqual(getBaseEmail('"weird@local"@example.com'), '"weird@local"@example.com', 'getBaseEmail: quoted-local style preserves full domain');
|
|
79
|
+
r = buildPlusAddressRegex('user@example.com');
|
|
80
|
+
expectMatch(r, 'user@example.com', 'regex matches base email');
|
|
81
|
+
expectMatch(r, 'user+1@example.com', 'regex matches plus variant');
|
|
82
|
+
expectMatch(r, 'user+anything-here@example.com', 'regex matches arbitrary plus tag');
|
|
83
|
+
expectMatch(r, 'USER+abc@EXAMPLE.com', 'regex is case-insensitive');
|
|
84
|
+
expectMatch(r, 'user+@example.com', 'regex matches empty plus tag (gap 3 fix)');
|
|
85
|
+
rDot = buildPlusAddressRegex('a.b@example.com');
|
|
86
|
+
expectMatch(rDot, 'a.b@example.com', 'regex matches literal . in local');
|
|
87
|
+
expectMatch(rDot, 'a.b+tag@example.com', 'regex matches plus variant of dotted local');
|
|
88
|
+
expectNoMatch(rDot, 'aXb@example.com', 'regex does NOT treat . as wildcard in local');
|
|
89
|
+
rDomain = buildPlusAddressRegex('user@ex.am-ple.com');
|
|
90
|
+
expectMatch(rDomain, 'user@ex.am-ple.com', 'regex matches literal . and - in domain');
|
|
91
|
+
expectNoMatch(rDomain, 'user@exXamXple.com', 'regex does NOT treat . as wildcard in domain');
|
|
92
|
+
// ====================== buildPlusAddressRegex — non-matches ======================
|
|
93
|
+
expectNoMatch(r, 'prefixuser@example.com', 'regex is anchored at start (no prefix match)');
|
|
94
|
+
expectNoMatch(r, 'user@example.com.evil', 'regex is anchored at end (no suffix match)');
|
|
95
|
+
expectNoMatch(r, 'user@other.com', 'regex rejects different domain');
|
|
96
|
+
expectNoMatch(r, 'other@example.com', 'regex rejects different local');
|
|
97
|
+
expectNoMatch(r, 'user+tag@example.com.evil', 'regex rejects suffixed domain even with plus tag');
|
|
98
|
+
expectNoMatch(r, 'usertag@example.com', 'regex requires + before tag (not bare suffix)');
|
|
99
|
+
rMulti = buildPlusAddressRegex('foo@bar@baz.com');
|
|
100
|
+
expectMatch(rMulti, 'foo@bar@baz.com', 'multi-@ regex matches its own input (domain preserved)');
|
|
101
|
+
expectNoMatch(rMulti, 'foo@baz.com', 'multi-@ regex does NOT match a stripped-down domain (proves we did not drop the second @)');
|
|
102
|
+
fromBase = buildPlusAddressRegex('user@example.com');
|
|
103
|
+
fromTagged = buildPlusAddressRegex('user+already@example.com');
|
|
104
|
+
expectEqual(fromBase.source, fromTagged.source, 'buildPlusAddressRegex: tagged input produces same regex as base input');
|
|
105
|
+
expectMatch(fromTagged, 'user+anything@example.com', 'regex from tagged input matches OTHER plus variants (not just the original tag)');
|
|
106
|
+
expectMatch(fromTagged, 'user@example.com', 'regex from tagged input still matches the bare base email');
|
|
107
|
+
// ====================== buildPlusAddressRegex — defensive ======================
|
|
108
|
+
expectThrows(function () { return buildPlusAddressRegex('noatsign'); }, 'buildPlusAddressRegex: throws on missing @', /Invalid email/);
|
|
109
|
+
expectThrows(function () { return buildPlusAddressRegex(''); }, 'buildPlusAddressRegex: throws on empty string', /Invalid email/);
|
|
110
|
+
validEmails = [
|
|
111
|
+
'user@example.com',
|
|
112
|
+
'user+1@example.com',
|
|
113
|
+
'User+Tag@Example.com',
|
|
114
|
+
'a.b.c@sub.example.co.uk',
|
|
115
|
+
'user+@example.com',
|
|
116
|
+
'user+a+b+c@example.com',
|
|
117
|
+
];
|
|
118
|
+
for (_i = 0, validEmails_1 = validEmails; _i < validEmails_1.length; _i++) {
|
|
119
|
+
e = validEmails_1[_i];
|
|
120
|
+
re = buildPlusAddressRegex(getBaseEmail(e));
|
|
121
|
+
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, "\""));
|
|
122
|
+
}
|
|
123
|
+
return [2 /*return*/];
|
|
124
|
+
});
|
|
125
|
+
}); };
|
|
126
|
+
if (require.main === module) {
|
|
127
|
+
email_utils_tests()
|
|
128
|
+
.then(function () {
|
|
129
|
+
console.log("✅ Email utils test suite completed successfully");
|
|
130
|
+
process.exit(0);
|
|
131
|
+
})
|
|
132
|
+
.catch(function (error) {
|
|
133
|
+
console.error("❌ Email utils test suite failed:", error);
|
|
134
|
+
process.exit(1);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
//# 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":"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"}
|
|
@@ -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,264 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
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;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
require('source-map-support').install();
|
|
38
|
+
import { Session } from "../../sdk";
|
|
39
|
+
import { async_test, log_header, } from "@tellescope/testing";
|
|
40
|
+
import { setup_tests } from "../setup";
|
|
41
|
+
var host = process.env.API_URL || 'http://localhost:8080';
|
|
42
|
+
export var organization_settings_duplicates_tests = function (_a) {
|
|
43
|
+
var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
|
|
44
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
45
|
+
var orgId;
|
|
46
|
+
return __generator(this, function (_b) {
|
|
47
|
+
switch (_b.label) {
|
|
48
|
+
case 0:
|
|
49
|
+
log_header("Organization Settings Duplicate Validation Tests");
|
|
50
|
+
orgId = sdk.userInfo.businessId;
|
|
51
|
+
// === A. replaceObjectFields: false (merge/push behavior) ===
|
|
52
|
+
// A1. Duplicate tags via merge
|
|
53
|
+
return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
|
|
54
|
+
settings: { endusers: { tags: ['tag1', 'tag2'] } }
|
|
55
|
+
}, { replaceObjectFields: true })];
|
|
56
|
+
case 1:
|
|
57
|
+
// === A. replaceObjectFields: false (merge/push behavior) ===
|
|
58
|
+
// A1. Duplicate tags via merge
|
|
59
|
+
_b.sent();
|
|
60
|
+
return [4 /*yield*/, async_test("Merge tags rejects duplicates (tag2 appears in both old and new)", function () { return sdk.api.organizations.updateOne(orgId, {
|
|
61
|
+
settings: { endusers: { tags: ['tag2', 'tag3'] } }
|
|
62
|
+
}); }, { shouldError: true, onError: function (e) { return e.message.includes('Duplicate value in settings.endusers.tags'); } })
|
|
63
|
+
// A2. Duplicate customFields via merge
|
|
64
|
+
];
|
|
65
|
+
case 2:
|
|
66
|
+
_b.sent();
|
|
67
|
+
// A2. Duplicate customFields via merge
|
|
68
|
+
return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
|
|
69
|
+
settings: { endusers: { customFields: [{ type: 'Text', field: 'myField', info: {} }] } }
|
|
70
|
+
}, { replaceObjectFields: true })];
|
|
71
|
+
case 3:
|
|
72
|
+
// A2. Duplicate customFields via merge
|
|
73
|
+
_b.sent();
|
|
74
|
+
return [4 /*yield*/, async_test("Merge customFields rejects duplicate field name", function () { return sdk.api.organizations.updateOne(orgId, {
|
|
75
|
+
settings: { endusers: { customFields: [{ type: 'Text', field: 'myField', info: {} }] } }
|
|
76
|
+
}); }, { shouldError: true, onError: function (e) { return e.message.includes('Duplicate field in settings.endusers.customFields'); } })
|
|
77
|
+
// A3. Duplicate builtinFields via merge
|
|
78
|
+
];
|
|
79
|
+
case 4:
|
|
80
|
+
_b.sent();
|
|
81
|
+
// A3. Duplicate builtinFields via merge
|
|
82
|
+
return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
|
|
83
|
+
settings: { endusers: { builtinFields: [{ field: 'fname', label: 'First Name' }] } }
|
|
84
|
+
}, { replaceObjectFields: true })];
|
|
85
|
+
case 5:
|
|
86
|
+
// A3. Duplicate builtinFields via merge
|
|
87
|
+
_b.sent();
|
|
88
|
+
return [4 /*yield*/, async_test("Merge builtinFields rejects duplicate field name", function () { return sdk.api.organizations.updateOne(orgId, {
|
|
89
|
+
settings: { endusers: { builtinFields: [{ field: 'fname', label: 'First Name Copy' }] } }
|
|
90
|
+
}); }, { shouldError: true, onError: function (e) { return e.message.includes('Duplicate field in settings.endusers.builtinFields'); } })
|
|
91
|
+
// A4. Duplicate dontRecordCallsToPhone via merge
|
|
92
|
+
];
|
|
93
|
+
case 6:
|
|
94
|
+
_b.sent();
|
|
95
|
+
// A4. Duplicate dontRecordCallsToPhone via merge
|
|
96
|
+
return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
|
|
97
|
+
settings: { endusers: { dontRecordCallsToPhone: ['+15551234567'] } }
|
|
98
|
+
}, { replaceObjectFields: true })];
|
|
99
|
+
case 7:
|
|
100
|
+
// A4. Duplicate dontRecordCallsToPhone via merge
|
|
101
|
+
_b.sent();
|
|
102
|
+
return [4 /*yield*/, async_test("Merge dontRecordCallsToPhone rejects duplicates", function () { return sdk.api.organizations.updateOne(orgId, {
|
|
103
|
+
settings: { endusers: { dontRecordCallsToPhone: ['+15551234567'] } }
|
|
104
|
+
}); }, { shouldError: true, onError: function (e) { return e.message.includes('Duplicate value in settings.endusers.dontRecordCallsToPhone'); } })
|
|
105
|
+
// A5. Duplicate cancelReasons via merge
|
|
106
|
+
];
|
|
107
|
+
case 8:
|
|
108
|
+
_b.sent();
|
|
109
|
+
// A5. Duplicate cancelReasons via merge
|
|
110
|
+
return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
|
|
111
|
+
settings: { calendar: { cancelReasons: ['No show'] } }
|
|
112
|
+
}, { replaceObjectFields: true })];
|
|
113
|
+
case 9:
|
|
114
|
+
// A5. Duplicate cancelReasons via merge
|
|
115
|
+
_b.sent();
|
|
116
|
+
return [4 /*yield*/, async_test("Merge cancelReasons rejects duplicates", function () { return sdk.api.organizations.updateOne(orgId, {
|
|
117
|
+
settings: { calendar: { cancelReasons: ['No show'] } }
|
|
118
|
+
}); }, { shouldError: true, onError: function (e) { return e.message.includes('Duplicate value in settings.calendar.cancelReasons'); } })
|
|
119
|
+
// === B. replaceObjectFields: true (full replacement) ===
|
|
120
|
+
// B1. Replace that grows the array with dupes should be rejected
|
|
121
|
+
];
|
|
122
|
+
case 10:
|
|
123
|
+
_b.sent();
|
|
124
|
+
// === B. replaceObjectFields: true (full replacement) ===
|
|
125
|
+
// B1. Replace that grows the array with dupes should be rejected
|
|
126
|
+
return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
|
|
127
|
+
settings: { endusers: { tags: ['tag1'] } }
|
|
128
|
+
}, { replaceObjectFields: true })];
|
|
129
|
+
case 11:
|
|
130
|
+
// === B. replaceObjectFields: true (full replacement) ===
|
|
131
|
+
// B1. Replace that grows the array with dupes should be rejected
|
|
132
|
+
_b.sent();
|
|
133
|
+
return [4 /*yield*/, async_test("Replace tags rejects duplicates when array grows", function () { return sdk.api.organizations.updateOne(orgId, {
|
|
134
|
+
settings: { endusers: { tags: ['tag1', 'tag1', 'tag2'] } }
|
|
135
|
+
}, { replaceObjectFields: true }); }, { shouldError: true, onError: function (e) { return e.message.includes('Duplicate value in settings.endusers.tags'); } })
|
|
136
|
+
// B2. Replace with dupes that shrinks the array should be allowed
|
|
137
|
+
];
|
|
138
|
+
case 12:
|
|
139
|
+
_b.sent();
|
|
140
|
+
// B2. Replace with dupes that shrinks the array should be allowed
|
|
141
|
+
return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
|
|
142
|
+
settings: { endusers: { tags: ['a', 'b', 'c'] } }
|
|
143
|
+
}, { replaceObjectFields: true })];
|
|
144
|
+
case 13:
|
|
145
|
+
// B2. Replace with dupes that shrinks the array should be allowed
|
|
146
|
+
_b.sent();
|
|
147
|
+
return [4 /*yield*/, async_test("Replace with dupes that shrinks array succeeds", function () { return sdk.api.organizations.updateOne(orgId, {
|
|
148
|
+
settings: { endusers: { tags: ['a', 'a'] } }
|
|
149
|
+
}, { replaceObjectFields: true }); }, { shouldError: false, onResult: function () { return true; } })
|
|
150
|
+
// B3. Replace with unique values always succeeds
|
|
151
|
+
];
|
|
152
|
+
case 14:
|
|
153
|
+
_b.sent();
|
|
154
|
+
// B3. Replace with unique values always succeeds
|
|
155
|
+
return [4 /*yield*/, async_test("Replace tags succeeds with unique values", function () { return sdk.api.organizations.updateOne(orgId, {
|
|
156
|
+
settings: { endusers: { tags: ['tag1', 'tag2'] } }
|
|
157
|
+
}, { replaceObjectFields: true }); }, { shouldError: false, onResult: function () { return true; } })
|
|
158
|
+
// === C. Non-duplicate updates still succeed ===
|
|
159
|
+
// C1. Set initial tags then add different tags via merge
|
|
160
|
+
];
|
|
161
|
+
case 15:
|
|
162
|
+
// B3. Replace with unique values always succeeds
|
|
163
|
+
_b.sent();
|
|
164
|
+
// === C. Non-duplicate updates still succeed ===
|
|
165
|
+
// C1. Set initial tags then add different tags via merge
|
|
166
|
+
return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
|
|
167
|
+
settings: { endusers: { tags: ['tagA', 'tagB'] } }
|
|
168
|
+
}, { replaceObjectFields: true })];
|
|
169
|
+
case 16:
|
|
170
|
+
// === C. Non-duplicate updates still succeed ===
|
|
171
|
+
// C1. Set initial tags then add different tags via merge
|
|
172
|
+
_b.sent();
|
|
173
|
+
return [4 /*yield*/, async_test("Merge with unique new tags succeeds", function () { return sdk.api.organizations.updateOne(orgId, {
|
|
174
|
+
settings: { endusers: { tags: ['tagC', 'tagD'] } }
|
|
175
|
+
}); }, { shouldError: false, onResult: function () { return true; } })
|
|
176
|
+
// C2. Replace with unique values
|
|
177
|
+
];
|
|
178
|
+
case 17:
|
|
179
|
+
_b.sent();
|
|
180
|
+
// C2. Replace with unique values
|
|
181
|
+
return [4 /*yield*/, async_test("Replace customFields with unique values succeeds", function () { return sdk.api.organizations.updateOne(orgId, {
|
|
182
|
+
settings: { endusers: { customFields: [
|
|
183
|
+
{ type: 'Text', field: 'field1', info: {} },
|
|
184
|
+
{ type: 'Text', field: 'field2', info: {} },
|
|
185
|
+
] } }
|
|
186
|
+
}, { replaceObjectFields: true }); }, { shouldError: false, onResult: function () { return true; } })
|
|
187
|
+
// C3. Updating another settings field preserves pre-existing duplicates
|
|
188
|
+
// First set tags to a longer array, then shrink to a dupe array (shrinking is allowed)
|
|
189
|
+
];
|
|
190
|
+
case 18:
|
|
191
|
+
// C2. Replace with unique values
|
|
192
|
+
_b.sent();
|
|
193
|
+
// C3. Updating another settings field preserves pre-existing duplicates
|
|
194
|
+
// First set tags to a longer array, then shrink to a dupe array (shrinking is allowed)
|
|
195
|
+
return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
|
|
196
|
+
settings: { endusers: { tags: ['dupeTag', 'otherTag', 'anotherTag'] } }
|
|
197
|
+
}, { replaceObjectFields: true })];
|
|
198
|
+
case 19:
|
|
199
|
+
// C3. Updating another settings field preserves pre-existing duplicates
|
|
200
|
+
// First set tags to a longer array, then shrink to a dupe array (shrinking is allowed)
|
|
201
|
+
_b.sent();
|
|
202
|
+
return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
|
|
203
|
+
settings: { endusers: { tags: ['dupeTag', 'dupeTag'] } }
|
|
204
|
+
}, { replaceObjectFields: true })];
|
|
205
|
+
case 20:
|
|
206
|
+
_b.sent();
|
|
207
|
+
return [4 /*yield*/, async_test("Updating cancelReasons succeeds even when tags has pre-existing duplicates", function () { return sdk.api.organizations.updateOne(orgId, {
|
|
208
|
+
settings: { calendar: { cancelReasons: ['new reason'] } }
|
|
209
|
+
}, { replaceObjectFields: true }); }, { shouldError: false, onResult: function () { return true; } })
|
|
210
|
+
// Clean up settings to avoid affecting other tests
|
|
211
|
+
];
|
|
212
|
+
case 21:
|
|
213
|
+
_b.sent();
|
|
214
|
+
// Clean up settings to avoid affecting other tests
|
|
215
|
+
return [4 /*yield*/, sdk.api.organizations.updateOne(orgId, {
|
|
216
|
+
settings: {
|
|
217
|
+
endusers: {
|
|
218
|
+
tags: [],
|
|
219
|
+
customFields: [],
|
|
220
|
+
builtinFields: [],
|
|
221
|
+
dontRecordCallsToPhone: [],
|
|
222
|
+
},
|
|
223
|
+
calendar: {
|
|
224
|
+
cancelReasons: [],
|
|
225
|
+
},
|
|
226
|
+
}
|
|
227
|
+
}, { replaceObjectFields: true })];
|
|
228
|
+
case 22:
|
|
229
|
+
// Clean up settings to avoid affecting other tests
|
|
230
|
+
_b.sent();
|
|
231
|
+
return [2 /*return*/];
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
};
|
|
236
|
+
// Allow running this test file independently
|
|
237
|
+
if (require.main === module) {
|
|
238
|
+
console.log("Using API URL: ".concat(host));
|
|
239
|
+
var sdk_1 = new Session({ host: host });
|
|
240
|
+
var sdkNonAdmin_1 = new Session({ host: host });
|
|
241
|
+
var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
242
|
+
return __generator(this, function (_a) {
|
|
243
|
+
switch (_a.label) {
|
|
244
|
+
case 0: return [4 /*yield*/, setup_tests(sdk_1, sdkNonAdmin_1)];
|
|
245
|
+
case 1:
|
|
246
|
+
_a.sent();
|
|
247
|
+
return [4 /*yield*/, organization_settings_duplicates_tests({ sdk: sdk_1, sdkNonAdmin: sdkNonAdmin_1 })];
|
|
248
|
+
case 2:
|
|
249
|
+
_a.sent();
|
|
250
|
+
return [2 /*return*/];
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
}); };
|
|
254
|
+
runTests()
|
|
255
|
+
.then(function () {
|
|
256
|
+
console.log("✅ Organization settings duplicate validation tests completed successfully");
|
|
257
|
+
process.exit(0);
|
|
258
|
+
})
|
|
259
|
+
.catch(function (error) {
|
|
260
|
+
console.error("❌ Organization settings duplicate validation tests failed:", error);
|
|
261
|
+
process.exit(1);
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
//# 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;
|
|
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"}
|