@tellescope/sdk 1.237.2 → 1.237.4

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 (34) hide show
  1. package/lib/cjs/enduser.d.ts +1 -1
  2. package/lib/cjs/tests/api_tests/database_cascade_delete.test.d.ts +6 -0
  3. package/lib/cjs/tests/api_tests/database_cascade_delete.test.d.ts.map +1 -0
  4. package/lib/cjs/tests/api_tests/database_cascade_delete.test.js +298 -0
  5. package/lib/cjs/tests/api_tests/database_cascade_delete.test.js.map +1 -0
  6. package/lib/cjs/tests/api_tests/inbox_thread_assignment_updates.test.d.ts.map +1 -1
  7. package/lib/cjs/tests/api_tests/inbox_thread_assignment_updates.test.js +173 -11
  8. package/lib/cjs/tests/api_tests/inbox_thread_assignment_updates.test.js.map +1 -1
  9. package/lib/cjs/tests/api_tests/inbox_thread_status_preservation.test.d.ts +6 -0
  10. package/lib/cjs/tests/api_tests/inbox_thread_status_preservation.test.d.ts.map +1 -0
  11. package/lib/cjs/tests/tests.d.ts.map +1 -1
  12. package/lib/cjs/tests/tests.js +30 -3
  13. package/lib/cjs/tests/tests.js.map +1 -1
  14. package/lib/esm/enduser.d.ts +1 -1
  15. package/lib/esm/tests/api_tests/database_cascade_delete.test.d.ts +6 -0
  16. package/lib/esm/tests/api_tests/database_cascade_delete.test.d.ts.map +1 -0
  17. package/lib/esm/tests/api_tests/database_cascade_delete.test.js +294 -0
  18. package/lib/esm/tests/api_tests/database_cascade_delete.test.js.map +1 -0
  19. package/lib/esm/tests/api_tests/inbox_thread_assignment_updates.test.d.ts.map +1 -1
  20. package/lib/esm/tests/api_tests/inbox_thread_assignment_updates.test.js +173 -11
  21. package/lib/esm/tests/api_tests/inbox_thread_assignment_updates.test.js.map +1 -1
  22. package/lib/esm/tests/api_tests/inbox_thread_status_preservation.test.d.ts +6 -0
  23. package/lib/esm/tests/api_tests/inbox_thread_status_preservation.test.d.ts.map +1 -0
  24. package/lib/esm/tests/api_tests/inbox_thread_status_preservation.test.js +435 -0
  25. package/lib/esm/tests/api_tests/inbox_thread_status_preservation.test.js.map +1 -0
  26. package/lib/esm/tests/tests.d.ts.map +1 -1
  27. package/lib/esm/tests/tests.js +30 -3
  28. package/lib/esm/tests/tests.js.map +1 -1
  29. package/lib/tsconfig.tsbuildinfo +1 -1
  30. package/package.json +10 -10
  31. package/src/tests/api_tests/database_cascade_delete.test.ts +193 -0
  32. package/src/tests/api_tests/inbox_thread_assignment_updates.test.ts +158 -0
  33. package/src/tests/tests.ts +23 -0
  34. package/test_generated.pdf +0 -0
@@ -1958,7 +1958,7 @@ export declare class EnduserSession extends Session {
1958
1958
  };
1959
1959
  }>;
1960
1960
  begin_login_flow: (a: Omit<extractFields<PublicActions['endusers']['begin_login_flow']['parameters']>, 'businessId' | 'organizationIds'>) => Promise<{
1961
- result: "continue-with-password" | "sent-email" | "sent-sms";
1961
+ result: "continue-with-password" | "sent-email" | "sent-sms" | "requires-dob";
1962
1962
  email?: string | undefined;
1963
1963
  otpToken?: string | undefined;
1964
1964
  }>;
@@ -0,0 +1,6 @@
1
+ import { Session } from "../../sdk";
2
+ export declare const database_cascade_delete_tests: ({ sdk, sdkNonAdmin }: {
3
+ sdk: Session;
4
+ sdkNonAdmin: Session;
5
+ }) => Promise<void>;
6
+ //# sourceMappingURL=database_cascade_delete.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database_cascade_delete.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/database_cascade_delete.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAYnC,eAAO,MAAM,6BAA6B;SAAwC,OAAO;iBAAe,OAAO;mBA4J9G,CAAA"}
@@ -0,0 +1,294 @@
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, wait, } from "@tellescope/testing";
40
+ import { setup_tests } from "../setup";
41
+ var host = process.env.API_URL || 'http://localhost:8080';
42
+ // Main test function that can be called independently or from main test suite
43
+ export var database_cascade_delete_tests = function (_a) {
44
+ var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
45
+ return __awaiter(void 0, void 0, void 0, function () {
46
+ return __generator(this, function (_b) {
47
+ switch (_b.label) {
48
+ case 0:
49
+ log_header("Database Cascade Delete Tests");
50
+ // Test 1: Create database and records, then delete database and verify records are cascade deleted
51
+ return [4 /*yield*/, async_test('cascade delete - deleting database deletes all database_records', function () { return __awaiter(void 0, void 0, void 0, function () {
52
+ var database, records, recordIds, recordsBefore, recordsAfter, _i, recordIds_1, recordId, err_1;
53
+ var _a, _b;
54
+ return __generator(this, function (_c) {
55
+ switch (_c.label) {
56
+ case 0: return [4 /*yield*/, sdk.api.databases.createOne({
57
+ title: "__Test__CascadeDelete_".concat(Date.now()),
58
+ fields: [
59
+ { type: 'Text', label: "Name" },
60
+ { type: 'Number', label: "Age" },
61
+ ],
62
+ })
63
+ // Create multiple database records
64
+ ];
65
+ case 1:
66
+ database = _c.sent();
67
+ return [4 /*yield*/, sdk.api.database_records.createSome([
68
+ {
69
+ databaseId: database.id,
70
+ values: [
71
+ { type: 'Text', value: 'Alice', label: 'Name' },
72
+ { type: 'Number', value: 25, label: 'Age' },
73
+ ],
74
+ },
75
+ {
76
+ databaseId: database.id,
77
+ values: [
78
+ { type: 'Text', value: 'Bob', label: 'Name' },
79
+ { type: 'Number', value: 30, label: 'Age' },
80
+ ],
81
+ },
82
+ {
83
+ databaseId: database.id,
84
+ values: [
85
+ { type: 'Text', value: 'Charlie', label: 'Name' },
86
+ { type: 'Number', value: 35, label: 'Age' },
87
+ ],
88
+ },
89
+ ])];
90
+ case 2:
91
+ records = _c.sent();
92
+ recordIds = records.created.map(function (r) { return r.id; });
93
+ console.log("Created database ".concat(database.id, " with ").concat(recordIds.length, " records"));
94
+ return [4 /*yield*/, sdk.api.database_records.getSome({ filter: { databaseId: database.id } })];
95
+ case 3:
96
+ recordsBefore = _c.sent();
97
+ if (recordsBefore.length !== 3) {
98
+ throw new Error("Expected 3 records before delete, got ".concat(recordsBefore.length));
99
+ }
100
+ console.log("Verified ".concat(recordsBefore.length, " records exist before deletion"));
101
+ // Delete the database
102
+ return [4 /*yield*/, sdk.api.databases.deleteOne(database.id)];
103
+ case 4:
104
+ // Delete the database
105
+ _c.sent();
106
+ console.log("Deleted database ".concat(database.id));
107
+ // Wait a moment for cascade delete to propagate
108
+ return [4 /*yield*/, wait(undefined, 500)
109
+ // Verify all records were cascade deleted
110
+ ];
111
+ case 5:
112
+ // Wait a moment for cascade delete to propagate
113
+ _c.sent();
114
+ return [4 /*yield*/, sdk.api.database_records.getSome({ filter: { databaseId: database.id } })];
115
+ case 6:
116
+ recordsAfter = _c.sent();
117
+ if (recordsAfter.length !== 0) {
118
+ throw new Error("Expected 0 records after cascade delete, got ".concat(recordsAfter.length));
119
+ }
120
+ console.log("\u2713 Verified all records were cascade deleted");
121
+ _i = 0, recordIds_1 = recordIds;
122
+ _c.label = 7;
123
+ case 7:
124
+ if (!(_i < recordIds_1.length)) return [3 /*break*/, 12];
125
+ recordId = recordIds_1[_i];
126
+ _c.label = 8;
127
+ case 8:
128
+ _c.trys.push([8, 10, , 11]);
129
+ return [4 /*yield*/, sdk.api.database_records.getOne(recordId)];
130
+ case 9:
131
+ _c.sent();
132
+ throw new Error("Record ".concat(recordId, " should have been deleted but was still found"));
133
+ case 10:
134
+ err_1 = _c.sent();
135
+ if (!((_a = err_1.message) === null || _a === void 0 ? void 0 : _a.includes('Could not find')) && !((_b = err_1.message) === null || _b === void 0 ? void 0 : _b.includes('404'))) {
136
+ throw new Error("Unexpected error fetching deleted record: ".concat(err_1.message));
137
+ }
138
+ return [3 /*break*/, 11];
139
+ case 11:
140
+ _i++;
141
+ return [3 /*break*/, 7];
142
+ case 12:
143
+ console.log("\u2713 Verified individual record fetches return not found");
144
+ return [2 /*return*/, true];
145
+ }
146
+ });
147
+ }); }, { onResult: function (result) { return result === true; } })
148
+ // Test 2: Verify database with no records can be deleted without error
149
+ ];
150
+ case 1:
151
+ // Test 1: Create database and records, then delete database and verify records are cascade deleted
152
+ _b.sent();
153
+ // Test 2: Verify database with no records can be deleted without error
154
+ return [4 /*yield*/, async_test('cascade delete - deleting empty database works', function () { return __awaiter(void 0, void 0, void 0, function () {
155
+ var database, err_2;
156
+ var _a, _b;
157
+ return __generator(this, function (_c) {
158
+ switch (_c.label) {
159
+ case 0: return [4 /*yield*/, sdk.api.databases.createOne({
160
+ title: "__Test__EmptyDB_".concat(Date.now()),
161
+ fields: [{ type: 'Text', label: "Field" }],
162
+ })
163
+ // Delete immediately without adding records
164
+ ];
165
+ case 1:
166
+ database = _c.sent();
167
+ // Delete immediately without adding records
168
+ return [4 /*yield*/, sdk.api.databases.deleteOne(database.id)
169
+ // Verify database is gone
170
+ ];
171
+ case 2:
172
+ // Delete immediately without adding records
173
+ _c.sent();
174
+ _c.label = 3;
175
+ case 3:
176
+ _c.trys.push([3, 5, , 6]);
177
+ return [4 /*yield*/, sdk.api.databases.getOne(database.id)];
178
+ case 4:
179
+ _c.sent();
180
+ throw new Error('Database should have been deleted');
181
+ case 5:
182
+ err_2 = _c.sent();
183
+ if (!((_a = err_2.message) === null || _a === void 0 ? void 0 : _a.includes('Could not find')) && !((_b = err_2.message) === null || _b === void 0 ? void 0 : _b.includes('404'))) {
184
+ throw new Error("Unexpected error: ".concat(err_2.message));
185
+ }
186
+ return [3 /*break*/, 6];
187
+ case 6: return [2 /*return*/, true];
188
+ }
189
+ });
190
+ }); }, { onResult: function (result) { return result === true; } })
191
+ // Test 3: Verify records from other databases are not affected
192
+ ];
193
+ case 2:
194
+ // Test 2: Verify database with no records can be deleted without error
195
+ _b.sent();
196
+ // Test 3: Verify records from other databases are not affected
197
+ return [4 /*yield*/, async_test('cascade delete - only affects records from deleted database', function () { return __awaiter(void 0, void 0, void 0, function () {
198
+ var database1, database2, db2Record, db2RecordAfter;
199
+ return __generator(this, function (_a) {
200
+ switch (_a.label) {
201
+ case 0: return [4 /*yield*/, sdk.api.databases.createOne({
202
+ title: "__Test__DB1_".concat(Date.now()),
203
+ fields: [{ type: 'Text', label: "Value" }],
204
+ })];
205
+ case 1:
206
+ database1 = _a.sent();
207
+ return [4 /*yield*/, sdk.api.databases.createOne({
208
+ title: "__Test__DB2_".concat(Date.now()),
209
+ fields: [{ type: 'Text', label: "Value" }],
210
+ })
211
+ // Create records in both databases
212
+ ];
213
+ case 2:
214
+ database2 = _a.sent();
215
+ // Create records in both databases
216
+ return [4 /*yield*/, sdk.api.database_records.createOne({
217
+ databaseId: database1.id,
218
+ values: [{ type: 'Text', value: 'DB1 Record', label: 'Value' }],
219
+ })];
220
+ case 3:
221
+ // Create records in both databases
222
+ _a.sent();
223
+ return [4 /*yield*/, sdk.api.database_records.createOne({
224
+ databaseId: database2.id,
225
+ values: [{ type: 'Text', value: 'DB2 Record', label: 'Value' }],
226
+ })
227
+ // Delete database1
228
+ ];
229
+ case 4:
230
+ db2Record = _a.sent();
231
+ // Delete database1
232
+ return [4 /*yield*/, sdk.api.databases.deleteOne(database1.id)];
233
+ case 5:
234
+ // Delete database1
235
+ _a.sent();
236
+ return [4 /*yield*/, wait(undefined, 500)
237
+ // Verify database2's record still exists
238
+ ];
239
+ case 6:
240
+ _a.sent();
241
+ return [4 /*yield*/, sdk.api.database_records.getOne(db2Record.id)];
242
+ case 7:
243
+ db2RecordAfter = _a.sent();
244
+ if (!db2RecordAfter) {
245
+ throw new Error('Database2 record should still exist');
246
+ }
247
+ console.log("\u2713 Verified database2 record was not affected by database1 deletion");
248
+ // Cleanup database2
249
+ return [4 /*yield*/, sdk.api.databases.deleteOne(database2.id)];
250
+ case 8:
251
+ // Cleanup database2
252
+ _a.sent();
253
+ return [2 /*return*/, true];
254
+ }
255
+ });
256
+ }); }, { onResult: function (result) { return result === true; } })];
257
+ case 3:
258
+ // Test 3: Verify records from other databases are not affected
259
+ _b.sent();
260
+ console.log("✅ All Database Cascade Delete tests passed!");
261
+ return [2 /*return*/];
262
+ }
263
+ });
264
+ });
265
+ };
266
+ // Allow running this test file independently
267
+ if (require.main === module) {
268
+ console.log("\uD83C\uDF10 Using API URL: ".concat(host));
269
+ var sdk_1 = new Session({ host: host });
270
+ var sdkNonAdmin_1 = new Session({ host: host });
271
+ var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
272
+ return __generator(this, function (_a) {
273
+ switch (_a.label) {
274
+ case 0: return [4 /*yield*/, setup_tests(sdk_1, sdkNonAdmin_1)];
275
+ case 1:
276
+ _a.sent();
277
+ return [4 /*yield*/, database_cascade_delete_tests({ sdk: sdk_1, sdkNonAdmin: sdkNonAdmin_1 })];
278
+ case 2:
279
+ _a.sent();
280
+ return [2 /*return*/];
281
+ }
282
+ });
283
+ }); };
284
+ runTests()
285
+ .then(function () {
286
+ console.log("✅ Database cascade delete test suite completed successfully");
287
+ process.exit(0);
288
+ })
289
+ .catch(function (error) {
290
+ console.error("❌ Database cascade delete test suite failed:", error);
291
+ process.exit(1);
292
+ });
293
+ }
294
+ //# sourceMappingURL=database_cascade_delete.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database_cascade_delete.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/database_cascade_delete.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"inbox_thread_assignment_updates.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/inbox_thread_assignment_updates.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,eAAO,MAAM,qCAAqC;SAAuC,OAAO;iBAAe,OAAO;mBAigBrH,CAAA"}
1
+ {"version":3,"file":"inbox_thread_assignment_updates.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/inbox_thread_assignment_updates.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,eAAO,MAAM,qCAAqC;SAAuC,OAAO;iBAAe,OAAO;mBA+pBrH,CAAA"}
@@ -53,7 +53,7 @@ var host = process.env.API_URL || 'http://localhost:8080';
53
53
  export var inbox_thread_assignment_updates_tests = function (_a) {
54
54
  var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
55
55
  return __awaiter(void 0, void 0, void 0, function () {
56
- var timestamp, testUser, testEnduser, defaultThreadFields, emailSubject, emailThreadId, emailThread, testEmail, smsThread, testSMS, testChatRoom, chatThread, loadedThreads, updatedEmailThread, loadedThreads2, updatedSMSThread, loadedThreads3, updatedChatThread, loadedThreads4, unchangedThread, loadedThreads5, clearedAssignThread, fixedTimestamp, matchingTimestampSubject, matchingTimestampThreadId, matchingTimestampEmailThread_1, matchingTimestampEmail, loadedThreads6, matchingTimestampUpdatedThread, matchingTimestampSMSThread_1, matchingTimestampSMS, loadedThreads7, matchingTimestampSMSUpdatedThread, orphanEmail, threadsBeforeOrphanUpdate, threadCountBefore, threadsAfterOrphanUpdate, threadCountAfter, upsertSMS, threadsAfterUpsertTest, upsertedThread, countResult, allThreads, filteredThreads, filteredCount, nonMatchingCount, emailTypeFilter, foundEmailByType, foundSmsByType, multiTypeFilter, foundEmailMulti, foundSmsMulti, foundChatMulti, assigneeFilter, foundAssigned, combinedFilter, foundCombined, mdbFilterCount, emptyMdbFilter, idsFilterResult, foundEmailById, foundSmsById, foundChatById, singleIdResult, idsCombinedResult, idsCountResult, emptyIdsResult, err_1;
56
+ var timestamp, testUser, testEnduser, defaultThreadFields, emailSubject, emailThreadId, emailThread, testEmail, smsThread, testSMS, testChatRoom, chatThread, loadedThreads, updatedEmailThread, loadedThreads2, updatedSMSThread, loadedThreads3, updatedChatThread, loadedThreads4, unchangedThread, loadedThreads5, clearedAssignThread, fixedTimestamp, matchingTimestampSubject, matchingTimestampThreadId, matchingTimestampEmailThread_1, matchingTimestampEmail, loadedThreads6, matchingTimestampUpdatedThread, matchingTimestampSMSThread_1, matchingTimestampSMS, loadedThreads7, matchingTimestampSMSUpdatedThread, orphanEmail, threadsBeforeOrphanUpdate, threadCountBefore, threadsAfterOrphanUpdate, threadCountAfter, upsertSMS, threadsAfterUpsertTest, upsertedThread, countResult, allThreads, filteredThreads, filteredCount, nonMatchingCount, emailTypeFilter, foundEmailByType, foundSmsByType, multiTypeFilter, foundEmailMulti, foundSmsMulti, foundChatMulti, assigneeFilter, foundAssigned, combinedFilter, foundCombined, mdbFilterCount, emptyMdbFilter, idsFilterResult, foundEmailById, foundSmsById, foundChatById, singleIdResult, idsCombinedResult, idsCountResult, emptyIdsResult, sortTestBaseTime, sortThread1, sortThread2, sortThread3, defaultSortResult, timestampSortResult, outboundSortResult, statusTestSMS1, statusTestFrom, statusTestThreads, statusTestThread, statusTestSMS2, threadAfterOutbound, statusTestSMS3, threadAfterNewInbound, err_1;
57
57
  var _b;
58
58
  return __generator(this, function (_c) {
59
59
  switch (_c.label) {
@@ -147,7 +147,7 @@ export var inbox_thread_assignment_updates_tests = function (_a) {
147
147
  _c.sent();
148
148
  _c.label = 11;
149
149
  case 11:
150
- _c.trys.push([11, , 67, 71]);
150
+ _c.trys.push([11, , 87, 91]);
151
151
  // Test 1: Email Assignment Updates
152
152
  console.log("Testing email assignment updates...");
153
153
  // Update email assignment
@@ -581,10 +581,172 @@ export var inbox_thread_assignment_updates_tests = function (_a) {
581
581
  emptyIdsResult = _c.sent();
582
582
  assert(emptyIdsResult.threads.length >= 3, 'Empty ids array should not filter (return all threads)');
583
583
  console.log("✅ ids filter empty array test passed");
584
- console.log("🎉 All InboxThread assignment update tests passed!");
585
- return [3 /*break*/, 71];
584
+ // Test 24: sortBy parameter - default behavior (timestamp)
585
+ console.log("Testing sortBy parameter - default behavior...");
586
+ sortTestBaseTime = Date.now();
587
+ return [4 /*yield*/, sdk.api.inbox_threads.createOne(__assign(__assign({}, defaultThreadFields), { type: "SMS", title: "Sort Test Thread 1", threadId: "sort-test-1-".concat(timestamp), phoneNumber: "+15555550001", enduserPhoneNumber: "+15555550002", timestamp: new Date(sortTestBaseTime - 3000), outboundTimestamp: new Date(sortTestBaseTime) }))];
586
588
  case 67:
587
- _c.trys.push([67, 69, , 70]);
589
+ sortThread1 = _c.sent();
590
+ return [4 /*yield*/, sdk.api.inbox_threads.createOne(__assign(__assign({}, defaultThreadFields), { type: "SMS", title: "Sort Test Thread 2", threadId: "sort-test-2-".concat(timestamp), phoneNumber: "+15555550003", enduserPhoneNumber: "+15555550004", timestamp: new Date(sortTestBaseTime - 1000), outboundTimestamp: new Date(sortTestBaseTime - 3000) }))];
591
+ case 68:
592
+ sortThread2 = _c.sent();
593
+ return [4 /*yield*/, sdk.api.inbox_threads.createOne(__assign(__assign({}, defaultThreadFields), { type: "SMS", title: "Sort Test Thread 3", threadId: "sort-test-3-".concat(timestamp), phoneNumber: "+15555550005", enduserPhoneNumber: "+15555550006", timestamp: new Date(sortTestBaseTime - 2000), outboundTimestamp: new Date(sortTestBaseTime - 2000) }))
594
+ // Test default sort (should be by timestamp descending)
595
+ ];
596
+ case 69:
597
+ sortThread3 = _c.sent();
598
+ return [4 /*yield*/, sdk.api.inbox_threads.load_threads({
599
+ ids: [sortThread1.id, sortThread2.id, sortThread3.id]
600
+ })];
601
+ case 70:
602
+ defaultSortResult = _c.sent();
603
+ assert(defaultSortResult.threads.length === 3, 'Should return 3 sort test threads');
604
+ assert(defaultSortResult.threads[0].id === sortThread2.id, 'Default sort: newest timestamp should be first');
605
+ assert(defaultSortResult.threads[1].id === sortThread3.id, 'Default sort: middle timestamp should be second');
606
+ assert(defaultSortResult.threads[2].id === sortThread1.id, 'Default sort: oldest timestamp should be last');
607
+ console.log("✅ sortBy default behavior test passed");
608
+ // Test 25: sortBy='timestamp' explicit
609
+ console.log("Testing sortBy='timestamp' explicit...");
610
+ return [4 /*yield*/, sdk.api.inbox_threads.load_threads({
611
+ ids: [sortThread1.id, sortThread2.id, sortThread3.id],
612
+ sortBy: 'timestamp'
613
+ })];
614
+ case 71:
615
+ timestampSortResult = _c.sent();
616
+ assert(timestampSortResult.threads[0].id === sortThread2.id, 'Explicit timestamp sort: newest should be first');
617
+ assert(timestampSortResult.threads[1].id === sortThread3.id, 'Explicit timestamp sort: middle should be second');
618
+ assert(timestampSortResult.threads[2].id === sortThread1.id, 'Explicit timestamp sort: oldest should be last');
619
+ console.log("✅ sortBy='timestamp' test passed");
620
+ // Test 26: sortBy='outboundTimestamp'
621
+ console.log("Testing sortBy='outboundTimestamp'...");
622
+ return [4 /*yield*/, sdk.api.inbox_threads.load_threads({
623
+ ids: [sortThread1.id, sortThread2.id, sortThread3.id],
624
+ sortBy: 'outboundTimestamp'
625
+ })];
626
+ case 72:
627
+ outboundSortResult = _c.sent();
628
+ assert(outboundSortResult.threads[0].id === sortThread1.id, 'OutboundTimestamp sort: newest outbound should be first');
629
+ assert(outboundSortResult.threads[1].id === sortThread3.id, 'OutboundTimestamp sort: middle outbound should be second');
630
+ assert(outboundSortResult.threads[2].id === sortThread2.id, 'OutboundTimestamp sort: oldest outbound should be last');
631
+ console.log("✅ sortBy='outboundTimestamp' test passed");
632
+ // Cleanup sort test threads
633
+ return [4 /*yield*/, Promise.all([
634
+ sdk.api.inbox_threads.deleteOne(sortThread1.id),
635
+ sdk.api.inbox_threads.deleteOne(sortThread2.id),
636
+ sdk.api.inbox_threads.deleteOne(sortThread3.id),
637
+ ])
638
+ // ========== InboxStatus Preservation Tests ==========
639
+ // These tests verify that outbound messages do NOT reset inboxStatus
640
+ // Test 27: Outbound SMS should NOT reset inboxStatus
641
+ ];
642
+ case 73:
643
+ // Cleanup sort test threads
644
+ _c.sent();
645
+ // ========== InboxStatus Preservation Tests ==========
646
+ // These tests verify that outbound messages do NOT reset inboxStatus
647
+ // Test 27: Outbound SMS should NOT reset inboxStatus
648
+ console.log("Testing outbound SMS should NOT reset inboxStatus...");
649
+ return [4 /*yield*/, sdk.api.sms_messages.createOne({
650
+ message: "Inbound test message for status test",
651
+ enduserId: testEnduser.id,
652
+ inbound: true,
653
+ phoneNumber: "+15555559999",
654
+ enduserPhoneNumber: "+15555559876",
655
+ logOnly: true,
656
+ })
657
+ // Build threads using reset_threads + build_threads pattern
658
+ ];
659
+ case 74:
660
+ statusTestSMS1 = _c.sent();
661
+ statusTestFrom = new Date(Date.now() - 60000);
662
+ return [4 /*yield*/, sdk.api.inbox_threads.reset_threads()];
663
+ case 75:
664
+ _c.sent();
665
+ return [4 /*yield*/, sdk.api.inbox_threads.build_threads({ from: statusTestFrom, to: new Date() })];
666
+ case 76:
667
+ _c.sent();
668
+ return [4 /*yield*/, sdk.api.inbox_threads.load_threads({})];
669
+ case 77:
670
+ statusTestThreads = _c.sent();
671
+ statusTestThread = statusTestThreads.threads.find(function (t) {
672
+ return t.type === 'SMS' && t.enduserIds.includes(testEnduser.id) && t.phoneNumber === "+15555559999";
673
+ });
674
+ assert(!!statusTestThread, "Status test SMS thread should be created");
675
+ assert(statusTestThread.inboxStatus === 'New', "Initial status should be 'New', got '".concat(statusTestThread.inboxStatus, "'"));
676
+ // Update thread status to "Resolved"
677
+ return [4 /*yield*/, sdk.api.inbox_threads.updateOne(statusTestThread.id, { inboxStatus: "Resolved" })
678
+ // Create outbound SMS (should NOT reset status)
679
+ ];
680
+ case 78:
681
+ // Update thread status to "Resolved"
682
+ _c.sent();
683
+ return [4 /*yield*/, sdk.api.sms_messages.createOne({
684
+ message: "Outbound reply - should not reset status",
685
+ enduserId: testEnduser.id,
686
+ inbound: false,
687
+ phoneNumber: "+15555559999",
688
+ enduserPhoneNumber: "+15555559876",
689
+ logOnly: true,
690
+ })
691
+ // Rebuild threads - status should remain "Resolved"
692
+ ];
693
+ case 79:
694
+ statusTestSMS2 = _c.sent();
695
+ // Rebuild threads - status should remain "Resolved"
696
+ return [4 /*yield*/, sdk.api.inbox_threads.build_threads({ from: statusTestFrom, to: new Date() })];
697
+ case 80:
698
+ // Rebuild threads - status should remain "Resolved"
699
+ _c.sent();
700
+ return [4 /*yield*/, sdk.api.inbox_threads.load_threads({ ids: [statusTestThread.id] })];
701
+ case 81:
702
+ threadAfterOutbound = (_c.sent()).threads[0];
703
+ assert(threadAfterOutbound.inboxStatus === 'Resolved', "Status should remain 'Resolved' after outbound message, got '".concat(threadAfterOutbound.inboxStatus, "'"));
704
+ assert(!!threadAfterOutbound.outboundTimestamp, "outboundTimestamp should be set after outbound message");
705
+ console.log("✅ Outbound SMS does NOT reset inboxStatus test passed");
706
+ // Test 28: New inbound SMS SHOULD update inboxStatus
707
+ console.log("Testing new inbound SMS SHOULD update inboxStatus...");
708
+ // Wait to ensure ObjectId timestamps are in different seconds (MongoDB ObjectIds have second-level precision)
709
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 1100); })];
710
+ case 82:
711
+ // Wait to ensure ObjectId timestamps are in different seconds (MongoDB ObjectIds have second-level precision)
712
+ _c.sent();
713
+ return [4 /*yield*/, sdk.api.sms_messages.createOne({
714
+ message: "New inbound - should update status",
715
+ enduserId: testEnduser.id,
716
+ inbound: true,
717
+ phoneNumber: "+15555559999",
718
+ enduserPhoneNumber: "+15555559876",
719
+ inboxStatus: "New",
720
+ logOnly: true,
721
+ })
722
+ // Rebuild threads - status SHOULD be updated from new inbound
723
+ ];
724
+ case 83:
725
+ statusTestSMS3 = _c.sent();
726
+ // Rebuild threads - status SHOULD be updated from new inbound
727
+ return [4 /*yield*/, sdk.api.inbox_threads.build_threads({ from: statusTestFrom, to: new Date() })];
728
+ case 84:
729
+ // Rebuild threads - status SHOULD be updated from new inbound
730
+ _c.sent();
731
+ return [4 /*yield*/, sdk.api.inbox_threads.load_threads({ ids: [statusTestThread.id] })];
732
+ case 85:
733
+ threadAfterNewInbound = (_c.sent()).threads[0];
734
+ assert(threadAfterNewInbound.inboxStatus === 'New', "Status SHOULD be 'New' after new inbound message, got '".concat(threadAfterNewInbound.inboxStatus, "'"));
735
+ console.log("✅ New inbound SMS DOES update inboxStatus test passed");
736
+ // Cleanup status preservation test resources
737
+ return [4 /*yield*/, Promise.all([
738
+ sdk.api.sms_messages.deleteOne(statusTestSMS1.id),
739
+ sdk.api.sms_messages.deleteOne(statusTestSMS2.id),
740
+ sdk.api.sms_messages.deleteOne(statusTestSMS3.id),
741
+ sdk.api.inbox_threads.deleteOne(statusTestThread.id),
742
+ ])];
743
+ case 86:
744
+ // Cleanup status preservation test resources
745
+ _c.sent();
746
+ console.log("🎉 All InboxThread assignment update tests passed!");
747
+ return [3 /*break*/, 91];
748
+ case 87:
749
+ _c.trys.push([87, 89, , 90]);
588
750
  return [4 /*yield*/, Promise.all([
589
751
  sdk.api.inbox_threads.deleteOne(emailThread.id),
590
752
  sdk.api.inbox_threads.deleteOne(smsThread.id),
@@ -595,15 +757,15 @@ export var inbox_thread_assignment_updates_tests = function (_a) {
595
757
  sdk.api.endusers.deleteOne(testEnduser.id),
596
758
  sdk.api.users.deleteOne(testUser.id),
597
759
  ])];
598
- case 68:
760
+ case 88:
599
761
  _c.sent();
600
- return [3 /*break*/, 70];
601
- case 69:
762
+ return [3 /*break*/, 90];
763
+ case 89:
602
764
  err_1 = _c.sent();
603
765
  console.error("Cleanup error:", err_1);
604
- return [3 /*break*/, 70];
605
- case 70: return [7 /*endfinally*/];
606
- case 71: return [2 /*return*/];
766
+ return [3 /*break*/, 90];
767
+ case 90: return [7 /*endfinally*/];
768
+ case 91: return [2 /*return*/];
607
769
  }
608
770
  });
609
771
  });