@tellescope/sdk 0.0.8 → 0.0.12
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/enduser.d.ts +60 -2
- package/lib/cjs/enduser.d.ts.map +1 -1
- package/lib/cjs/enduser.js +12 -7
- package/lib/cjs/enduser.js.map +1 -1
- package/lib/cjs/sdk.d.ts +76 -3
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +16 -11
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/session.d.ts +2 -2
- package/lib/cjs/session.d.ts.map +1 -1
- package/lib/cjs/session.js +2 -2
- package/lib/cjs/session.js.map +1 -1
- package/lib/cjs/tests/socket_tests.js +46 -9
- package/lib/cjs/tests/socket_tests.js.map +1 -1
- package/lib/cjs/tests/tests.js +150 -44
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/enduser.d.ts +60 -2
- package/lib/esm/enduser.d.ts.map +1 -1
- package/lib/esm/enduser.js +12 -7
- package/lib/esm/enduser.js.map +1 -1
- package/lib/esm/sdk.d.ts +76 -3
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +16 -11
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/session.d.ts +2 -2
- package/lib/esm/session.d.ts.map +1 -1
- package/lib/esm/session.js +2 -2
- package/lib/esm/session.js.map +1 -1
- package/lib/esm/tests/socket_tests.js +46 -9
- package/lib/esm/tests/socket_tests.js.map +1 -1
- package/lib/esm/tests/tests.js +151 -45
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -11
- package/src/enduser.ts +15 -2
- package/src/sdk.ts +21 -3
- package/src/session.ts +1 -1
- package/src/tests/socket_tests.ts +31 -7
- package/src/tests/tests.ts +85 -6
package/src/tests/tests.ts
CHANGED
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
|
|
26
26
|
import { Session, APIQuery, EnduserSession } from "../sdk"
|
|
27
27
|
import { } from "@tellescope/utilities"
|
|
28
|
-
import { DEFAULT_OPERATIONS } from "@tellescope/constants"
|
|
28
|
+
import { DEFAULT_OPERATIONS, PLACEHOLDER_ID } from "@tellescope/constants"
|
|
29
29
|
import {
|
|
30
30
|
schema,
|
|
31
31
|
Model,
|
|
@@ -190,6 +190,48 @@ const threadKeyTests = async () => {
|
|
|
190
190
|
])
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
+
const filterTests = async () => {
|
|
194
|
+
const enduser = await sdk.api.endusers.createOne({ email: 'filtertests@tellescope.com', fname: 'test' })
|
|
195
|
+
const otherEnduser = await sdk.api.endusers.createOne({ email: 'other@tellescope.com' })
|
|
196
|
+
await async_test(
|
|
197
|
+
`find enduser by filter`,
|
|
198
|
+
() => sdk.api.endusers.getSome({ filter: { email: 'filtertests@tellescope.com' }}),
|
|
199
|
+
{ onResult: es => es.length === 1 && es[0].id === enduser.id },
|
|
200
|
+
)
|
|
201
|
+
await async_test(
|
|
202
|
+
`find enduser by compound filter`,
|
|
203
|
+
() => sdk.api.endusers.getSome({ filter: { email: 'filtertests@tellescope.com', fname: 'test' }}),
|
|
204
|
+
{ onResult: es => es.length === 1 && es[0].id === enduser.id },
|
|
205
|
+
)
|
|
206
|
+
await async_test(
|
|
207
|
+
`nothing found by invalid compound filter`,
|
|
208
|
+
() => sdk.api.endusers.getSome({ filter: { email: 'filtertests@tellescope.com', fname: 'nottest' }}),
|
|
209
|
+
{ onResult: es => es.length === 0 },
|
|
210
|
+
)
|
|
211
|
+
await async_test(
|
|
212
|
+
`nothing found for invalid filter`,
|
|
213
|
+
() => sdk.api.endusers.getSome({ filter: { email: 'doesnotexist@tellescope.com' }}),
|
|
214
|
+
{ onResult: es => es.length === 0 },
|
|
215
|
+
)
|
|
216
|
+
|
|
217
|
+
await sdk.api.endusers.deleteOne(enduser.id)
|
|
218
|
+
await sdk.api.endusers.deleteOne(otherEnduser.id)
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
const updatesTests = async () => {
|
|
222
|
+
const enduser = await sdk.api.endusers.createOne({ email: 'test@tellescope.com', phone: '+15555555555' })
|
|
223
|
+
await sdk.api.endusers.updateOne(enduser.id, { phone: '+15555555552' }) // update to new phone number
|
|
224
|
+
await sdk.api.endusers.updateOne(enduser.id, { phone: '+15555555552' }) // update to same phone number
|
|
225
|
+
assert(!!enduser, '', 'Updated phone number')
|
|
226
|
+
|
|
227
|
+
const task = await sdk.api.tasks.createOne({ text: "do the thing", completed: false })
|
|
228
|
+
await sdk.api.tasks.updateOne(task.id, { completed: false }) // test setting false (falsey value) on update
|
|
229
|
+
assert(!!task, '', 'Set completed false')
|
|
230
|
+
|
|
231
|
+
await sdk.api.tasks.deleteOne(task.id)
|
|
232
|
+
await sdk.api.endusers.deleteOne(enduser.id)
|
|
233
|
+
}
|
|
234
|
+
|
|
193
235
|
const instanceForModel = <N extends ModelName, T=ClientModelForName[N], REQ=ClientModelForName_required[N]>(model: Model<T, N>, i=0) => {
|
|
194
236
|
const instance = {} as Indexable
|
|
195
237
|
const updates = {} as Indexable
|
|
@@ -311,7 +353,7 @@ const run_generated_tests = async <N extends ModelName>({ queries, model, name,
|
|
|
311
353
|
await async_test(
|
|
312
354
|
`update-${singularName}`,
|
|
313
355
|
() => queries.updateOne(_id, updates, { replaceObjectFields: true }),
|
|
314
|
-
|
|
356
|
+
{ onResult: u => typeof u === 'object' && u.id === _id }
|
|
315
357
|
)
|
|
316
358
|
}
|
|
317
359
|
await async_test(
|
|
@@ -871,6 +913,31 @@ const enduserAccessTests = async () => {
|
|
|
871
913
|
}
|
|
872
914
|
}
|
|
873
915
|
|
|
916
|
+
const ticketAccessible = await sdk.api.tickets.createOne({ enduserId: enduser.id, title: "Accessible ticket" })
|
|
917
|
+
const ticketInaccessible = await sdk.api.tickets.createOne({ enduserId: PLACEHOLDER_ID, title: "Inaccessible ticket" })
|
|
918
|
+
await async_test(
|
|
919
|
+
`enduser cannot create ticket for another enduser`,
|
|
920
|
+
() => enduserSDK.api.tickets.createOne({ enduserId: sdk.userInfo.id, title: "Error on Creation" }),
|
|
921
|
+
{ shouldError: true, onError: e => e.message === "enduserId does not match creator id for enduser session" }
|
|
922
|
+
)
|
|
923
|
+
await async_test(
|
|
924
|
+
`enduser-access default, no access constraints, matching enduserId`,
|
|
925
|
+
() => enduserSDK.api.tickets.getOne(ticketAccessible.id),
|
|
926
|
+
{ onResult: t => t.id === ticketAccessible.id }
|
|
927
|
+
)
|
|
928
|
+
await async_test(
|
|
929
|
+
`no-enduser-access default, no access constraints, non-matching enduserId`,
|
|
930
|
+
() => enduserSDK.api.tickets.getOne(ticketInaccessible.id),
|
|
931
|
+
{ shouldError: true, onError: e => e.message.startsWith("Could not find")}
|
|
932
|
+
)
|
|
933
|
+
await async_test(
|
|
934
|
+
`no-enduser-access default, no access constraints, get many`,
|
|
935
|
+
() => enduserSDK.api.tickets.getSome(),
|
|
936
|
+
{ onResult: ts => ts.length === 1 }
|
|
937
|
+
)
|
|
938
|
+
|
|
939
|
+
await sdk.api.tickets.deleteOne(ticketAccessible.id)
|
|
940
|
+
await sdk.api.tickets.deleteOne(ticketInaccessible.id)
|
|
874
941
|
await sdk.api.endusers.deleteOne(enduser.id)
|
|
875
942
|
}
|
|
876
943
|
|
|
@@ -887,16 +954,28 @@ const tests: { [K in keyof ClientModelForName]: () => void } = {
|
|
|
887
954
|
users: () => {},
|
|
888
955
|
templates: () => {},
|
|
889
956
|
files: () => {},
|
|
957
|
+
tickets: () => {},
|
|
958
|
+
meetings: () => {},
|
|
890
959
|
};
|
|
891
960
|
|
|
892
961
|
(async () => {
|
|
893
962
|
await sdk.authenticate(email, password, host)
|
|
894
963
|
|
|
895
964
|
log_header("API")
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
965
|
+
|
|
966
|
+
try {
|
|
967
|
+
await setup_tests()
|
|
968
|
+
await multi_tenant_tests() // should come right after setup tests
|
|
969
|
+
await filterTests()
|
|
970
|
+
await updatesTests()
|
|
971
|
+
await threadKeyTests()
|
|
972
|
+
await enduserAccessTests()
|
|
973
|
+
} catch(err) {
|
|
974
|
+
console.error("Failed during custom test")
|
|
975
|
+
console.error(err)
|
|
976
|
+
process.exit()
|
|
977
|
+
}
|
|
978
|
+
|
|
900
979
|
|
|
901
980
|
let n: keyof typeof schema;
|
|
902
981
|
for (n in schema) {
|