@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.
@@ -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
- passOnVoid
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
- await setup_tests()
897
- await enduserAccessTests()
898
- await multi_tenant_tests() // should come right after setup tests
899
- await threadKeyTests()
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) {