@tellescope/sdk 1.66.2 → 1.66.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.
@@ -2827,6 +2827,186 @@ const formSubmittedTriggerTests = async () => {
2827
2827
  title: "Inactive"
2828
2828
  })
2829
2829
 
2830
+ const noConditions = await sdk.api.automation_triggers.createOne({
2831
+ event: {
2832
+ type: 'Form Submitted',
2833
+ info: {
2834
+ formId: form.id,
2835
+ },
2836
+ },
2837
+ action: { type: 'Add Tags', info: { tags: ['No Conditions'] }},
2838
+ status: 'Active',
2839
+ title: "No Conditions"
2840
+ })
2841
+ const equals = await sdk.api.automation_triggers.createOne({
2842
+ event: {
2843
+ type: 'Form Submitted',
2844
+ info: {
2845
+ formId: form.id,
2846
+ },
2847
+ conditions : {
2848
+ "$and" : [
2849
+ {
2850
+ "condition" : {
2851
+ [field.id]: "trigger 2"
2852
+ }
2853
+ }
2854
+ ]
2855
+ },
2856
+ },
2857
+ action: { type: 'Add Tags', info: { tags: ['Equals'] }},
2858
+ status: 'Active',
2859
+ title: "Equals"
2860
+ })
2861
+ const equalsFalse = await sdk.api.automation_triggers.createOne({
2862
+ event: {
2863
+ type: 'Form Submitted',
2864
+ info: {
2865
+ formId: form.id,
2866
+ },
2867
+ conditions : {
2868
+ "$and" : [
2869
+ {
2870
+ "condition" : {
2871
+ [field.id]: "tri"
2872
+ }
2873
+ }
2874
+ ]
2875
+ },
2876
+ },
2877
+ action: { type: 'Add Tags', info: { tags: ['No'] }},
2878
+ status: 'Active',
2879
+ title: "Equals False"
2880
+ })
2881
+ const existsTrue = await sdk.api.automation_triggers.createOne({
2882
+ event: {
2883
+ type: 'Form Submitted',
2884
+ info: {
2885
+ formId: form.id,
2886
+ },
2887
+ conditions : {
2888
+ "$and" : [
2889
+ {
2890
+ "condition" : {
2891
+ [field.id]: { $exists: true }
2892
+ }
2893
+ }
2894
+ ]
2895
+ },
2896
+ },
2897
+ action: { type: 'Add Tags', info: { tags: ['exists'] }},
2898
+ status: 'Active',
2899
+ title: "Exists true"
2900
+ })
2901
+ const existsFalse = await sdk.api.automation_triggers.createOne({
2902
+ event: {
2903
+ type: 'Form Submitted',
2904
+ info: {
2905
+ formId: form.id,
2906
+ },
2907
+ conditions : {
2908
+ "$and" : [
2909
+ {
2910
+ "condition" : {
2911
+ [field.id]: { $exists: false }
2912
+ }
2913
+ }
2914
+ ]
2915
+ },
2916
+ },
2917
+ action: { type: 'Add Tags', info: { tags: ['No'] }},
2918
+ status: 'Active',
2919
+ title: "Exists False"
2920
+ })
2921
+ const doesNotContainTrue = await sdk.api.automation_triggers.createOne({
2922
+ event: {
2923
+ type: 'Form Submitted',
2924
+ info: {
2925
+ formId: form.id,
2926
+ },
2927
+ conditions : {
2928
+ "$and" : [
2929
+ {
2930
+ "condition" : {
2931
+ [field.id]: {
2932
+ "$doesNotContain" : "tri2"
2933
+ }
2934
+ }
2935
+ }
2936
+ ]
2937
+ },
2938
+ },
2939
+ action: { type: 'Add Tags', info: { tags: ['doesNotContain'] }},
2940
+ status: 'Active',
2941
+ title: "doesNotContainTrue"
2942
+ })
2943
+ const doesNotContainFalse = await sdk.api.automation_triggers.createOne({
2944
+ event: {
2945
+ type: 'Form Submitted',
2946
+ info: {
2947
+ formId: form.id,
2948
+ },
2949
+ conditions : {
2950
+ "$and" : [
2951
+ {
2952
+ "condition" : {
2953
+ [field.id]: {
2954
+ "$doesNotContain" : "tri"
2955
+ }
2956
+ }
2957
+ }
2958
+ ]
2959
+ },
2960
+ },
2961
+ action: { type: 'Add Tags', info: { tags: ['No'] }},
2962
+ status: 'Active',
2963
+ title: "doesNotContainFalse"
2964
+ })
2965
+ const containFalse = await sdk.api.automation_triggers.createOne({
2966
+ event: {
2967
+ type: 'Form Submitted',
2968
+ info: {
2969
+ formId: form.id,
2970
+ },
2971
+ conditions : {
2972
+ "$and" : [
2973
+ {
2974
+ "condition" : {
2975
+ [field.id]: {
2976
+ "$contains" : "tri2"
2977
+ }
2978
+ }
2979
+ }
2980
+ ]
2981
+ },
2982
+ },
2983
+ action: { type: 'Add Tags', info: { tags: ['No'] }},
2984
+ status: 'Active',
2985
+ title: "containFalse"
2986
+ })
2987
+ const containTrue = await sdk.api.automation_triggers.createOne({
2988
+ event: {
2989
+ type: 'Form Submitted',
2990
+ info: {
2991
+ formId: form.id,
2992
+ },
2993
+ conditions : {
2994
+ "$and" : [
2995
+ {
2996
+ "condition" : {
2997
+ [field.id]: {
2998
+ "$contains" : "tri"
2999
+ }
3000
+ }
3001
+ }
3002
+ ]
3003
+ },
3004
+ },
3005
+ action: { type: 'Add Tags', info: { tags: ['contains'] }},
3006
+ status: 'Active',
3007
+ title: "containTrue"
3008
+ })
3009
+
2830
3010
  const { accessCode } = await sdk.api.form_responses.prepare_form_response({
2831
3011
  enduserId: enduser.id,
2832
3012
  formId: form.id,
@@ -2849,6 +3029,19 @@ const formSubmittedTriggerTests = async () => {
2849
3029
  // allow triggers to happen
2850
3030
  await wait(undefined, 1000)
2851
3031
 
3032
+ await async_test(
3033
+ `Triggers with conditional works`,
3034
+ () => sdk.api.endusers.getOne(enduser.id),
3035
+ { onResult: e => !!(
3036
+ e.tags?.includes('Equals')
3037
+ && e.tags?.includes('contains')
3038
+ && e.tags?.includes('exists')
3039
+ && e.tags?.includes('No Conditions')
3040
+ && e.tags?.includes('doesNotContain')
3041
+ && !e.tags?.includes('No')
3042
+ )}
3043
+ )
3044
+
2852
3045
  await async_test(
2853
3046
  `Automated triggers work`,
2854
3047
  () => sdk.api.endusers.getOne(enduser.id),
@@ -2867,6 +3060,15 @@ const formSubmittedTriggerTests = async () => {
2867
3060
  sdk.api.automation_triggers.deleteOne(active.id),
2868
3061
  sdk.api.automation_triggers.deleteOne(dupActive.id),
2869
3062
  sdk.api.automation_triggers.deleteOne(inactive.id),
3063
+ sdk.api.automation_triggers.deleteOne(equals.id),
3064
+ sdk.api.automation_triggers.deleteOne(doesNotContainTrue.id),
3065
+ sdk.api.automation_triggers.deleteOne(containTrue.id),
3066
+ sdk.api.automation_triggers.deleteOne(noConditions.id),
3067
+ sdk.api.automation_triggers.deleteOne(existsTrue.id),
3068
+ sdk.api.automation_triggers.deleteOne(existsFalse.id),
3069
+ sdk.api.automation_triggers.deleteOne(containFalse.id),
3070
+ sdk.api.automation_triggers.deleteOne(equalsFalse.id),
3071
+ sdk.api.automation_triggers.deleteOne(doesNotContainFalse.id),
2870
3072
  ])
2871
3073
  }
2872
3074
 
@@ -3162,6 +3364,7 @@ const role_based_access_tests = async () => {
3162
3364
  await async_test(
3163
3365
  `[bulk] non-admin for chat message bad`,
3164
3366
  () => sdkNonAdmin.bulk_load({ load: [{ model: 'chats' }] }),
3367
+ // { onResult: result => result.results.flatMap(r => r?.records || []).length === 0 }
3165
3368
  handleAnyError // throws error in this case in enforceForeignAccessConstraints because there are no accessible chats
3166
3369
  )
3167
3370
  await async_test(
@@ -4917,6 +5120,7 @@ const TRACK_OPEN_IMAGE = Buffer.from(
4917
5120
 
4918
5121
  await mfa_tests()
4919
5122
  await setup_tests()
5123
+ await automation_trigger_tests()
4920
5124
  await enduser_session_tests()
4921
5125
  await nextReminderInMS_tests()
4922
5126
  await search_tests()
@@ -4929,7 +5133,6 @@ const TRACK_OPEN_IMAGE = Buffer.from(
4929
5133
  await merge_enduser_tests()
4930
5134
  await self_serve_appointment_booking_tests()
4931
5135
  await auto_reply_tests()
4932
- await automation_trigger_tests()
4933
5136
  await sub_organization_enduser_tests()
4934
5137
  await sub_organization_tests()
4935
5138
  await filter_by_date_tests()
Binary file