@tellescope/sdk 2.0.0-beta.1 → 2.0.0-beta.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/CLAUDE.md +24 -0
- package/env.example +6 -0
- package/lib/cjs/sdk.d.ts +373 -3
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/tests/api_tests/booking_prevent_upcoming_duplicate.test.d.ts +22 -0
- package/lib/cjs/tests/api_tests/booking_prevent_upcoming_duplicate.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/booking_prevent_upcoming_duplicate.test.js +506 -0
- package/lib/cjs/tests/api_tests/booking_prevent_upcoming_duplicate.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/enduser_fields_sync.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/enduser_fields_sync.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/enduser_fields_sync.test.js +3 -1
- package/lib/cjs/tests/api_tests/enduser_fields_sync.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/enduser_observations_auto_review.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/enduser_observations_auto_review.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/enduser_observations_auto_review.test.js +3 -1
- package/lib/cjs/tests/api_tests/enduser_observations_auto_review.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/form_vital_reading.test.d.ts +7 -0
- package/lib/cjs/tests/api_tests/form_vital_reading.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/form_vital_reading.test.js +461 -0
- package/lib/cjs/tests/api_tests/form_vital_reading.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/journey_statistics_cache.test.d.ts +26 -0
- package/lib/cjs/tests/api_tests/journey_statistics_cache.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/journey_statistics_cache.test.js +232 -0
- package/lib/cjs/tests/api_tests/journey_statistics_cache.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/journey_step_manual_count.test.d.ts +34 -0
- package/lib/cjs/tests/api_tests/journey_step_manual_count.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/journey_step_manual_count.test.js +243 -0
- package/lib/cjs/tests/api_tests/journey_step_manual_count.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/load_threads_care_team.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/load_threads_care_team.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/load_threads_care_team.test.js +3 -1
- package/lib/cjs/tests/api_tests/load_threads_care_team.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/organization_signup.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/organization_signup.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/organization_signup.test.js +3 -1
- package/lib/cjs/tests/api_tests/organization_signup.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/phone_embed_leave_message.test.d.ts +7 -0
- package/lib/cjs/tests/api_tests/phone_embed_leave_message.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/phone_embed_leave_message.test.js +571 -0
- package/lib/cjs/tests/api_tests/phone_embed_leave_message.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/programs.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/programs.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/programs.test.js +73 -17
- package/lib/cjs/tests/api_tests/programs.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/public_form_case_insensitive_match.test.d.ts +7 -0
- package/lib/cjs/tests/api_tests/public_form_case_insensitive_match.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/public_form_case_insensitive_match.test.js +733 -0
- package/lib/cjs/tests/api_tests/public_form_case_insensitive_match.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/security/add-to-journey-foreign-enduserid.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/security/add-to-journey-foreign-enduserid.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/add-to-journey-foreign-enduserid.test.js +3 -1
- package/lib/cjs/tests/api_tests/security/add-to-journey-foreign-enduserid.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/appointment-reschedule-ownership.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/security/appointment-reschedule-ownership.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/appointment-reschedule-ownership.test.js +3 -1
- package/lib/cjs/tests/api_tests/security/appointment-reschedule-ownership.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/file-link-session-confinement.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/security/file-link-session-confinement.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/file-link-session-confinement.test.js +3 -1
- package/lib/cjs/tests/api_tests/security/file-link-session-confinement.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/form-logic-js-execution.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/security/form-logic-js-execution.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/form-logic-js-execution.test.js +3 -1
- package/lib/cjs/tests/api_tests/security/form-logic-js-execution.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/formsort_webhook_auth_field_lock.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/formsort_webhook_auth_field_lock.test.js +424 -39
- package/lib/cjs/tests/api_tests/security/formsort_webhook_auth_field_lock.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js +2 -2
- package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.js +3 -1
- package/lib/cjs/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/session_for_join_link.test.d.ts +10 -0
- package/lib/cjs/tests/api_tests/session_for_join_link.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/session_for_join_link.test.js +147 -0
- package/lib/cjs/tests/api_tests/session_for_join_link.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/set_fields_order_templates.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/set_fields_order_templates.test.js +191 -88
- package/lib/cjs/tests/api_tests/set_fields_order_templates.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/stripe_checkout_items.test.d.ts +17 -0
- package/lib/cjs/tests/api_tests/stripe_checkout_items.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/stripe_checkout_items.test.js +219 -0
- package/lib/cjs/tests/api_tests/stripe_checkout_items.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/stripe_multiple_customer_ids.test.d.ts +5 -0
- package/lib/cjs/tests/api_tests/stripe_multiple_customer_ids.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/stripe_multiple_customer_ids.test.js +396 -0
- package/lib/cjs/tests/api_tests/stripe_multiple_customer_ids.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/tickets_bulk_assign_from_queue.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/tickets_bulk_assign_from_queue.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/tickets_bulk_assign_from_queue.test.js +3 -1
- package/lib/cjs/tests/api_tests/tickets_bulk_assign_from_queue.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/totp_mfa.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/totp_mfa.test.js +37 -31
- package/lib/cjs/tests/api_tests/totp_mfa.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/trigger_contains_matching.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/trigger_contains_matching.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/trigger_contains_matching.test.js +3 -1
- package/lib/cjs/tests/api_tests/trigger_contains_matching.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/user_logs_restore_deleted.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/user_logs_restore_deleted.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/user_logs_restore_deleted.test.js +3 -1
- package/lib/cjs/tests/api_tests/user_logs_restore_deleted.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/vital_review_trigger_action.test.d.ts +3 -1
- package/lib/cjs/tests/api_tests/vital_review_trigger_action.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/vital_review_trigger_action.test.js +3 -1
- package/lib/cjs/tests/api_tests/vital_review_trigger_action.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/vitl_push.test.d.ts +7 -0
- package/lib/cjs/tests/api_tests/vitl_push.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/vitl_push.test.js +341 -0
- package/lib/cjs/tests/api_tests/vitl_push.test.js.map +1 -0
- package/lib/cjs/tests/setup_isolated.d.ts +48 -0
- package/lib/cjs/tests/setup_isolated.d.ts.map +1 -1
- package/lib/cjs/tests/setup_isolated.js +119 -1
- package/lib/cjs/tests/setup_isolated.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +374 -292
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/cjs/tests/unit_tests/isolated_suite_discovery.test.d.ts +2 -0
- package/lib/cjs/tests/unit_tests/isolated_suite_discovery.test.d.ts.map +1 -0
- package/lib/cjs/tests/unit_tests/isolated_suite_discovery.test.js +201 -0
- package/lib/cjs/tests/unit_tests/isolated_suite_discovery.test.js.map +1 -0
- package/lib/cjs/tests/unit_tests/programs_conditional_logic.test.d.ts +3 -0
- package/lib/cjs/tests/unit_tests/programs_conditional_logic.test.d.ts.map +1 -0
- package/lib/cjs/tests/unit_tests/programs_conditional_logic.test.js +120 -0
- package/lib/cjs/tests/unit_tests/programs_conditional_logic.test.js.map +1 -0
- package/lib/cjs/tests/webhooks_tests.js +44 -34
- package/lib/cjs/tests/webhooks_tests.js.map +1 -1
- package/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/esm/sdk.d.ts +373 -3
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/tests/api_tests/booking_prevent_upcoming_duplicate.test.d.ts +22 -0
- package/lib/esm/tests/api_tests/booking_prevent_upcoming_duplicate.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/booking_prevent_upcoming_duplicate.test.js +501 -0
- package/lib/esm/tests/api_tests/booking_prevent_upcoming_duplicate.test.js.map +1 -0
- package/lib/esm/tests/api_tests/enduser_fields_sync.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/enduser_fields_sync.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/enduser_fields_sync.test.js +2 -0
- package/lib/esm/tests/api_tests/enduser_fields_sync.test.js.map +1 -1
- package/lib/esm/tests/api_tests/enduser_observations_auto_review.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/enduser_observations_auto_review.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/enduser_observations_auto_review.test.js +2 -0
- package/lib/esm/tests/api_tests/enduser_observations_auto_review.test.js.map +1 -1
- package/lib/esm/tests/api_tests/form_vital_reading.test.d.ts +7 -0
- package/lib/esm/tests/api_tests/form_vital_reading.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/form_vital_reading.test.js +456 -0
- package/lib/esm/tests/api_tests/form_vital_reading.test.js.map +1 -0
- package/lib/esm/tests/api_tests/journey_statistics_cache.test.d.ts +26 -0
- package/lib/esm/tests/api_tests/journey_statistics_cache.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/journey_statistics_cache.test.js +227 -0
- package/lib/esm/tests/api_tests/journey_statistics_cache.test.js.map +1 -0
- package/lib/esm/tests/api_tests/journey_step_manual_count.test.d.ts +34 -0
- package/lib/esm/tests/api_tests/journey_step_manual_count.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/journey_step_manual_count.test.js +238 -0
- package/lib/esm/tests/api_tests/journey_step_manual_count.test.js.map +1 -0
- package/lib/esm/tests/api_tests/load_threads_care_team.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/load_threads_care_team.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/load_threads_care_team.test.js +2 -0
- package/lib/esm/tests/api_tests/load_threads_care_team.test.js.map +1 -1
- package/lib/esm/tests/api_tests/organization_signup.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/organization_signup.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/organization_signup.test.js +2 -0
- package/lib/esm/tests/api_tests/organization_signup.test.js.map +1 -1
- package/lib/esm/tests/api_tests/phone_embed_leave_message.test.d.ts +7 -0
- package/lib/esm/tests/api_tests/phone_embed_leave_message.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/phone_embed_leave_message.test.js +566 -0
- package/lib/esm/tests/api_tests/phone_embed_leave_message.test.js.map +1 -0
- package/lib/esm/tests/api_tests/programs.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/programs.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/programs.test.js +72 -16
- package/lib/esm/tests/api_tests/programs.test.js.map +1 -1
- package/lib/esm/tests/api_tests/public_form_case_insensitive_match.test.d.ts +7 -0
- package/lib/esm/tests/api_tests/public_form_case_insensitive_match.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/public_form_case_insensitive_match.test.js +728 -0
- package/lib/esm/tests/api_tests/public_form_case_insensitive_match.test.js.map +1 -0
- package/lib/esm/tests/api_tests/security/add-to-journey-foreign-enduserid.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/security/add-to-journey-foreign-enduserid.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/add-to-journey-foreign-enduserid.test.js +2 -0
- package/lib/esm/tests/api_tests/security/add-to-journey-foreign-enduserid.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/appointment-reschedule-ownership.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/security/appointment-reschedule-ownership.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/appointment-reschedule-ownership.test.js +2 -0
- package/lib/esm/tests/api_tests/security/appointment-reschedule-ownership.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/file-link-session-confinement.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/security/file-link-session-confinement.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/file-link-session-confinement.test.js +2 -0
- package/lib/esm/tests/api_tests/security/file-link-session-confinement.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/form-logic-js-execution.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/security/form-logic-js-execution.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/form-logic-js-execution.test.js +2 -0
- package/lib/esm/tests/api_tests/security/form-logic-js-execution.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/formsort_webhook_auth_field_lock.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/formsort_webhook_auth_field_lock.test.js +424 -39
- package/lib/esm/tests/api_tests/security/formsort_webhook_auth_field_lock.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js +2 -2
- package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.js +2 -0
- package/lib/esm/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.js.map +1 -1
- package/lib/esm/tests/api_tests/session_for_join_link.test.d.ts +10 -0
- package/lib/esm/tests/api_tests/session_for_join_link.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/session_for_join_link.test.js +142 -0
- package/lib/esm/tests/api_tests/session_for_join_link.test.js.map +1 -0
- package/lib/esm/tests/api_tests/set_fields_order_templates.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/set_fields_order_templates.test.js +191 -88
- package/lib/esm/tests/api_tests/set_fields_order_templates.test.js.map +1 -1
- package/lib/esm/tests/api_tests/stripe_checkout_items.test.d.ts +17 -0
- package/lib/esm/tests/api_tests/stripe_checkout_items.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/stripe_checkout_items.test.js +214 -0
- package/lib/esm/tests/api_tests/stripe_checkout_items.test.js.map +1 -0
- package/lib/esm/tests/api_tests/stripe_multiple_customer_ids.test.d.ts +5 -0
- package/lib/esm/tests/api_tests/stripe_multiple_customer_ids.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/stripe_multiple_customer_ids.test.js +388 -0
- package/lib/esm/tests/api_tests/stripe_multiple_customer_ids.test.js.map +1 -0
- package/lib/esm/tests/api_tests/tickets_bulk_assign_from_queue.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/tickets_bulk_assign_from_queue.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/tickets_bulk_assign_from_queue.test.js +2 -0
- package/lib/esm/tests/api_tests/tickets_bulk_assign_from_queue.test.js.map +1 -1
- package/lib/esm/tests/api_tests/totp_mfa.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/totp_mfa.test.js +37 -31
- package/lib/esm/tests/api_tests/totp_mfa.test.js.map +1 -1
- package/lib/esm/tests/api_tests/trigger_contains_matching.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/trigger_contains_matching.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/trigger_contains_matching.test.js +2 -0
- package/lib/esm/tests/api_tests/trigger_contains_matching.test.js.map +1 -1
- package/lib/esm/tests/api_tests/user_logs_restore_deleted.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/user_logs_restore_deleted.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/user_logs_restore_deleted.test.js +2 -0
- package/lib/esm/tests/api_tests/user_logs_restore_deleted.test.js.map +1 -1
- package/lib/esm/tests/api_tests/vital_review_trigger_action.test.d.ts +3 -1
- package/lib/esm/tests/api_tests/vital_review_trigger_action.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/vital_review_trigger_action.test.js +2 -0
- package/lib/esm/tests/api_tests/vital_review_trigger_action.test.js.map +1 -1
- package/lib/esm/tests/api_tests/vitl_push.test.d.ts +7 -0
- package/lib/esm/tests/api_tests/vitl_push.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/vitl_push.test.js +333 -0
- package/lib/esm/tests/api_tests/vitl_push.test.js.map +1 -0
- package/lib/esm/tests/setup_isolated.d.ts +48 -0
- package/lib/esm/tests/setup_isolated.d.ts.map +1 -1
- package/lib/esm/tests/setup_isolated.js +114 -0
- package/lib/esm/tests/setup_isolated.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +375 -293
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/esm/tests/unit_tests/isolated_suite_discovery.test.d.ts +2 -0
- package/lib/esm/tests/unit_tests/isolated_suite_discovery.test.d.ts.map +1 -0
- package/lib/esm/tests/unit_tests/isolated_suite_discovery.test.js +174 -0
- package/lib/esm/tests/unit_tests/isolated_suite_discovery.test.js.map +1 -0
- package/lib/esm/tests/unit_tests/programs_conditional_logic.test.d.ts +3 -0
- package/lib/esm/tests/unit_tests/programs_conditional_logic.test.d.ts.map +1 -0
- package/lib/esm/tests/unit_tests/programs_conditional_logic.test.js +117 -0
- package/lib/esm/tests/unit_tests/programs_conditional_logic.test.js.map +1 -0
- package/lib/esm/tests/webhooks_tests.js +44 -34
- package/lib/esm/tests/webhooks_tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -11
- package/src/sdk.ts +3 -2
- package/src/tests/api_tests/booking_prevent_upcoming_duplicate.test.ts +541 -0
- package/src/tests/api_tests/enduser_fields_sync.test.ts +4 -0
- package/src/tests/api_tests/enduser_observations_auto_review.test.ts +4 -0
- package/src/tests/api_tests/form_vital_reading.test.ts +393 -0
- package/src/tests/api_tests/journey_statistics_cache.test.ts +237 -0
- package/src/tests/api_tests/journey_step_manual_count.test.ts +220 -0
- package/src/tests/api_tests/load_threads_care_team.test.ts +4 -0
- package/src/tests/api_tests/organization_signup.test.ts +4 -0
- package/src/tests/api_tests/phone_embed_leave_message.test.ts +541 -0
- package/src/tests/api_tests/programs.test.ts +351 -0
- package/src/tests/api_tests/public_form_case_insensitive_match.test.ts +632 -0
- package/src/tests/api_tests/security/add-to-journey-foreign-enduserid.test.ts +4 -0
- package/src/tests/api_tests/security/appointment-reschedule-ownership.test.ts +4 -0
- package/src/tests/api_tests/security/file-link-session-confinement.test.ts +4 -0
- package/src/tests/api_tests/security/form-logic-js-execution.test.ts +4 -0
- package/src/tests/api_tests/security/formsort_webhook_auth_field_lock.test.ts +225 -0
- package/src/tests/api_tests/security/register_business_id_injection.test.ts +2 -2
- package/src/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.ts +4 -0
- package/src/tests/api_tests/session_for_join_link.test.ts +99 -0
- package/src/tests/api_tests/set_fields_order_templates.test.ts +94 -9
- package/src/tests/api_tests/stripe_checkout_items.test.ts +186 -0
- package/src/tests/api_tests/tickets_bulk_assign_from_queue.test.ts +4 -0
- package/src/tests/api_tests/totp_mfa.test.ts +10 -5
- package/src/tests/api_tests/trigger_contains_matching.test.ts +4 -0
- package/src/tests/api_tests/user_logs_restore_deleted.test.ts +4 -0
- package/src/tests/api_tests/vital_review_trigger_action.test.ts +455 -0
- package/src/tests/api_tests/vitl_push.test.ts +323 -0
- package/src/tests/setup_isolated.ts +140 -0
- package/src/tests/tests.ts +124 -30
- package/src/tests/unit_tests/isolated_suite_discovery.test.ts +178 -0
- package/src/tests/unit_tests/programs_conditional_logic.test.ts +189 -0
- package/src/tests/webhooks_tests.ts +6 -1
- package/test_generated.pdf +0 -0
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
23
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
+
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;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
require('source-map-support').install();
|
|
49
|
+
import { DateTime } from "luxon";
|
|
50
|
+
import { find_conflicting_upcoming_event } from "@tellescope/utilities";
|
|
51
|
+
import { EnduserSession } from "../../sdk";
|
|
52
|
+
import { assert_checks, setup_isolated_tenant, } from "../setup_isolated";
|
|
53
|
+
var host = process.env.API_URL || 'http://localhost:8080';
|
|
54
|
+
var RAND = function () { return Math.random().toString(36).slice(2, 10); };
|
|
55
|
+
// dontsend- addresses are the provisioning convention for "never actually deliver"; no phone number
|
|
56
|
+
// is set on any enduser here, and every template disables confirmations and carries no reminders,
|
|
57
|
+
// so this suite cannot send a message to anyone.
|
|
58
|
+
var TEST_EMAIL = function () { return "dontsend-booking-dup-".concat(RAND(), "@tellescope.com"); };
|
|
59
|
+
var ONE_DAY_IN_MS = 24 * 60 * 60 * 1000;
|
|
60
|
+
/**
|
|
61
|
+
* Covers the per-template `preventBookingWhenUpcomingExists` setting: a patient cannot book a
|
|
62
|
+
* template while they already have an unresolved upcoming appointment of that same template.
|
|
63
|
+
*
|
|
64
|
+
* Provisions its own tenant because it needs host availability, two providers and templates in a
|
|
65
|
+
* known state — a shared tenant's weeklyAvailabilities and calendar are changed by other suites.
|
|
66
|
+
*
|
|
67
|
+
* Two layers:
|
|
68
|
+
* - unit checks of the pure predicate (find_conflicting_upcoming_event), which is the rule itself
|
|
69
|
+
* and is shared verbatim by the API and the webapp staff warning
|
|
70
|
+
* - end-to-end checks through book_appointment as an authenticated enduser, which is what the
|
|
71
|
+
* portal and the public booking page both call
|
|
72
|
+
*
|
|
73
|
+
* NOT covered here (manual QA): the AI voice-agent path and an EHR-synced event blocking a booking.
|
|
74
|
+
*/
|
|
75
|
+
export var booking_prevent_upcoming_duplicate_checks = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
76
|
+
var checks, record, TEMPLATE_ID, ENDUSER_ID, NOW, baseEvent, find, _i, _a, status_1, SAME_SLOT, tenant, sdk_1, hostUserId_1, otherHostUserId, WEEKLY_AVAILABILITY_1, templateFields, _b, restrictedTemplate_1, unrestrictedTemplate, create_enduser_session_1, give_upcoming_event_1, SLOTS_PER_DAY_1, nowET, bookingStart_1, slotCursor_1, next_slot_1, EXPECTED_REFUSAL, attempt_booking_1, _c, patA, patASDK, firstBooking, secondBooking_1, otherHostBooking, scheduledByBooking, unrestrictedBooking, patBSDK, patBBooking, freeing_case, _d, pastPat, pastPatSDK, pastBooking, _e, groupPat, groupPatSDK, groupOther, groupBooking, retrySDK, retrySlot, retryArgs, retryFirst, retrySecond, _f, groupCancelled, groupCancelledSDK, groupCancelledBooking, reschedSDK, reschedFirst, rescheduled, _g, _h, probedBooked, probedBookedSDK, probedFreeSDK, closedSlot, probeArgs, _j, probeBooked, probeFree, UNAVAILABLE, leftovers, i, e_1;
|
|
77
|
+
return __generator(this, function (_k) {
|
|
78
|
+
switch (_k.label) {
|
|
79
|
+
case 0:
|
|
80
|
+
checks = [];
|
|
81
|
+
record = function (label, pass, detail) { return checks.push({ label: label, pass: pass, detail: detail }); };
|
|
82
|
+
TEMPLATE_ID = '507f1f77bcf86cd799439011';
|
|
83
|
+
ENDUSER_ID = '507f1f77bcf86cd799439012';
|
|
84
|
+
NOW = 1700000000000;
|
|
85
|
+
baseEvent = {
|
|
86
|
+
id: 'event-1',
|
|
87
|
+
startTimeInMS: NOW + ONE_DAY_IN_MS,
|
|
88
|
+
templateId: TEMPLATE_ID,
|
|
89
|
+
attendees: [{ id: 'some-user' }, { id: ENDUSER_ID }],
|
|
90
|
+
};
|
|
91
|
+
find = function (overrides, args) {
|
|
92
|
+
if (overrides === void 0) { overrides = {}; }
|
|
93
|
+
if (args === void 0) { args = {}; }
|
|
94
|
+
return find_conflicting_upcoming_event(__assign({ events: [__assign(__assign({}, baseEvent), overrides)], enduserId: ENDUSER_ID, templateId: TEMPLATE_ID, nowInMS: NOW }, args));
|
|
95
|
+
};
|
|
96
|
+
record('U1: a future unresolved event of the same template conflicts', !!find(), 'the base case the setting exists for');
|
|
97
|
+
record('U2: the enduser need not be the FIRST attendee (group events)', !!find({ attendees: [{ id: 'other-enduser' }, { id: 'some-user' }, { id: ENDUSER_ID }] }), 'get_enduserId uses first-enduser-attendee; this predicate deliberately does not');
|
|
98
|
+
record('U3: a PAST event never conflicts', !find({ startTimeInMS: NOW - ONE_DAY_IN_MS }), 'past appointments never block, resolved or not');
|
|
99
|
+
record('U4: an event for a different template never conflicts', !find({ templateId: 'a-different-template' }), 'the restriction is per template');
|
|
100
|
+
record('U5: an event this enduser does not attend never conflicts', !find({ attendees: [{ id: 'someone-else' }] }), "another patient's appointment must not block");
|
|
101
|
+
record('U6: cancelledAt resolves the event', !find({ cancelledAt: new Date(NOW) }), 'cancelling frees up rebooking');
|
|
102
|
+
record('U7: noShowedAt resolves the event', !find({ noShowedAt: new Date(NOW) }), 'a no-show frees up rebooking');
|
|
103
|
+
record('U8: rescheduledAt resolves the event', !find({ rescheduledAt: new Date(NOW) }), 'a rescheduled-away event frees up rebooking');
|
|
104
|
+
record("U9: empty-string timestamps (the `Date | ''` shape) do NOT resolve the event", !!find({ cancelledAt: '', noShowedAt: '', rescheduledAt: '' }), "these fields are typed Date | '' — falsiness is what must be tested, not absence");
|
|
105
|
+
for (_i = 0, _a = ['Cancelled', 'No-showed', 'Rescheduled']; _i < _a.length; _i++) {
|
|
106
|
+
status_1 = _a[_i];
|
|
107
|
+
record("U10: an attendeeStatuses entry of '".concat(status_1, "' for THIS enduser resolves the event"), !find({ attendeeStatuses: [{ id: ENDUSER_ID, status: status_1, at: new Date(NOW) }] }), "note the exact spelling 'No-showed', which is not 'NoShow'");
|
|
108
|
+
}
|
|
109
|
+
record("U11: an attendeeStatuses entry of 'Confirmed' does NOT resolve the event", !!find({ attendeeStatuses: [{ id: ENDUSER_ID, status: 'Confirmed', at: new Date(NOW) }] }), 'only Cancelled / No-showed / Rescheduled free up rebooking');
|
|
110
|
+
record("U12: another attendee's 'Cancelled' status does NOT resolve it for this enduser", !!find({ attendeeStatuses: [{ id: 'other-enduser', status: 'Cancelled', at: new Date(NOW) }] }), 'a group event cancelled for someone else still blocks this patient');
|
|
111
|
+
record('U13: excludeEventId (the event being rescheduled away) does not conflict', !find({}, { excludeEventId: 'event-1' }), 'a reschedule must not be blocked by the very event it replaces');
|
|
112
|
+
record('U14: an event on hold (holdUntil) still conflicts', !!find({ holdUntil: new Date(NOW + ONE_DAY_IN_MS) }), 'accepted: an abandoned hold blocks rebooking until it expires');
|
|
113
|
+
record('U15: a cancelledGroupAttendees entry for this enduser resolves the event', !find({ cancelledGroupAttendees: [{ id: ENDUSER_ID }] }), 'Healthie and the portal cancel a group attendee with ONLY this legacy mirror, leaving them in attendees');
|
|
114
|
+
record("U16: an explicit 'Confirmed' status outranks a cancelledGroupAttendees entry", !!find({
|
|
115
|
+
attendeeStatuses: [{ id: ENDUSER_ID, status: 'Confirmed', at: new Date(NOW) }],
|
|
116
|
+
cancelledGroupAttendees: [{ id: ENDUSER_ID }],
|
|
117
|
+
}), 'same precedence as enduser_ids_for_event_wide_completion: an explicit status is authoritative');
|
|
118
|
+
record("U17: another attendee's cancelledGroupAttendees entry does not resolve it for this enduser", !!find({ cancelledGroupAttendees: [{ id: 'other-enduser' }] }), 'a group event cancelled for someone else still blocks this patient');
|
|
119
|
+
SAME_SLOT = { startTimeInMS: NOW + ONE_DAY_IN_MS, hostUserId: 'some-user' };
|
|
120
|
+
record('U18: the slot being booked right now (same time AND same host) is not a duplicate of itself', !find({ wasSelfScheduled: true }, { excludeSlot: SAME_SLOT }), 'keeps a retry / an idempotent voice-agent replay from being refused as a duplicate');
|
|
121
|
+
record('U19: the same time with a DIFFERENT host is still a duplicate', !!find({ wasSelfScheduled: true }, { excludeSlot: __assign(__assign({}, SAME_SLOT), { hostUserId: 'a-different-host' }) }), 'excludeSlot must not become a bypass for a genuine second appointment at the same moment');
|
|
122
|
+
record('U20: a NON-self-scheduled event at the same time and host is still a duplicate', !!find({ wasSelfScheduled: false }, { excludeSlot: SAME_SLOT }), 'the atomic upsert we defer to matches wasSelfScheduled: true, so it would never catch a '
|
|
123
|
+
+ 'staff-created or EHR-synced event at that instant — excusing it here would let a second one through');
|
|
124
|
+
_k.label = 1;
|
|
125
|
+
case 1:
|
|
126
|
+
_k.trys.push([1, , 45, 50]);
|
|
127
|
+
return [4 /*yield*/, setup_isolated_tenant({
|
|
128
|
+
name: "BookingDup ".concat(RAND()),
|
|
129
|
+
users: [{ isAdmin: true }, { isAdmin: true }],
|
|
130
|
+
apiKeys: 0,
|
|
131
|
+
})];
|
|
132
|
+
case 2:
|
|
133
|
+
tenant = _k.sent();
|
|
134
|
+
sdk_1 = tenant.sdk;
|
|
135
|
+
hostUserId_1 = tenant.users[0].id;
|
|
136
|
+
otherHostUserId = tenant.users[1].id;
|
|
137
|
+
WEEKLY_AVAILABILITY_1 = [1, 2, 3, 4, 5].map(function (dayOfWeekStartingSundayIndexedByZero) { return ({
|
|
138
|
+
dayOfWeekStartingSundayIndexedByZero: dayOfWeekStartingSundayIndexedByZero,
|
|
139
|
+
startTimeInMinutes: 9 * 60,
|
|
140
|
+
endTimeInMinutes: 17 * 60,
|
|
141
|
+
intervalInMinutes: 60,
|
|
142
|
+
}); });
|
|
143
|
+
return [4 /*yield*/, Promise.all([hostUserId_1, otherHostUserId].map(function (id) { return (sdk_1.api.users.updateOne(id, {
|
|
144
|
+
timezone: 'America/New_York',
|
|
145
|
+
weeklyAvailabilities: WEEKLY_AVAILABILITY_1,
|
|
146
|
+
}, { replaceObjectFields: true })); }))
|
|
147
|
+
// no reminders, confirmations disabled — this suite must never send anything
|
|
148
|
+
];
|
|
149
|
+
case 3:
|
|
150
|
+
_k.sent();
|
|
151
|
+
templateFields = {
|
|
152
|
+
durationInMinutes: 60,
|
|
153
|
+
confirmationEmailDisabled: true,
|
|
154
|
+
confirmationSMSDisabled: true,
|
|
155
|
+
reminders: [],
|
|
156
|
+
};
|
|
157
|
+
return [4 /*yield*/, Promise.all([
|
|
158
|
+
sdk_1.api.calendar_event_templates.createOne(__assign(__assign({ title: 'Consult' }, templateFields), { preventBookingWhenUpcomingExists: true })),
|
|
159
|
+
sdk_1.api.calendar_event_templates.createOne(__assign({ title: 'Follow-up' }, templateFields)),
|
|
160
|
+
])];
|
|
161
|
+
case 4:
|
|
162
|
+
_b = _k.sent(), restrictedTemplate_1 = _b[0], unrestrictedTemplate = _b[1];
|
|
163
|
+
create_enduser_session_1 = function (fname) { return __awaiter(void 0, void 0, void 0, function () {
|
|
164
|
+
var enduser, authToken, enduserSDK;
|
|
165
|
+
return __generator(this, function (_a) {
|
|
166
|
+
switch (_a.label) {
|
|
167
|
+
case 0: return [4 /*yield*/, sdk_1.api.endusers.createOne({ fname: fname, lname: 'Tester', email: TEST_EMAIL() })];
|
|
168
|
+
case 1:
|
|
169
|
+
enduser = _a.sent();
|
|
170
|
+
return [4 /*yield*/, sdk_1.api.endusers.generate_auth_token({ id: enduser.id })];
|
|
171
|
+
case 2:
|
|
172
|
+
authToken = (_a.sent()).authToken;
|
|
173
|
+
enduserSDK = new EnduserSession({ host: host, businessId: tenant.businessId, authToken: authToken });
|
|
174
|
+
return [2 /*return*/, { enduser: enduser, enduserSDK: enduserSDK }];
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}); };
|
|
178
|
+
give_upcoming_event_1 = function (enduserId, templateId, overrides) {
|
|
179
|
+
if (overrides === void 0) { overrides = {}; }
|
|
180
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
181
|
+
return __generator(this, function (_a) {
|
|
182
|
+
return [2 /*return*/, (sdk_1.api.calendar_events.createOne(__assign({ title: 'Consult', startTimeInMS: Date.now() + 3 * ONE_DAY_IN_MS, durationInMinutes: 60, templateId: templateId, attendees: [{ type: 'enduser', id: enduserId }], dontBlockAvailability: true, reminders: [] }, overrides)))
|
|
183
|
+
// Every booking attempt gets its own never-reused slot, so "Someone has already booked this
|
|
184
|
+
// time" can never be mistaken for the duplicate block we are actually testing. Both hosts share
|
|
185
|
+
// the 9-17 weekday availability set above: 8 hourly slots a day, walked forwards from a weekday
|
|
186
|
+
// next week (Tue->Fri stay inside the Mon-Fri availability).
|
|
187
|
+
];
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
};
|
|
191
|
+
SLOTS_PER_DAY_1 = 8;
|
|
192
|
+
nowET = DateTime.now().setZone('America/New_York');
|
|
193
|
+
bookingStart_1 = nowET.startOf('week').plus({ days: 1, weeks: 1 });
|
|
194
|
+
if (bookingStart_1 <= nowET)
|
|
195
|
+
bookingStart_1 = bookingStart_1.plus({ weeks: 1 });
|
|
196
|
+
slotCursor_1 = 0;
|
|
197
|
+
next_slot_1 = function () {
|
|
198
|
+
var i = slotCursor_1++;
|
|
199
|
+
return (bookingStart_1
|
|
200
|
+
.plus({ days: Math.floor(i / SLOTS_PER_DAY_1) })
|
|
201
|
+
.set({ hour: 9 + (i % SLOTS_PER_DAY_1), minute: 0, second: 0, millisecond: 0 })
|
|
202
|
+
.toJSDate());
|
|
203
|
+
};
|
|
204
|
+
EXPECTED_REFUSAL = "This appointment can't be booked. Please contact us if you need help scheduling.";
|
|
205
|
+
attempt_booking_1 = function (enduserSDK, args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
206
|
+
var createdEvent, err_1, message;
|
|
207
|
+
var _a;
|
|
208
|
+
return __generator(this, function (_b) {
|
|
209
|
+
switch (_b.label) {
|
|
210
|
+
case 0:
|
|
211
|
+
_b.trys.push([0, 2, , 3]);
|
|
212
|
+
return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment(__assign({ userId: hostUserId_1, timezone: 'America/New_York' }, args))];
|
|
213
|
+
case 1:
|
|
214
|
+
createdEvent = (_b.sent()).createdEvent;
|
|
215
|
+
return [2 /*return*/, { booked: true, event: createdEvent, error: '' }];
|
|
216
|
+
case 2:
|
|
217
|
+
err_1 = _b.sent();
|
|
218
|
+
message = typeof err_1 === 'string' ? err_1 : ((_a = err_1 === null || err_1 === void 0 ? void 0 : err_1.message) !== null && _a !== void 0 ? _a : JSON.stringify(err_1));
|
|
219
|
+
return [2 /*return*/, { booked: false, event: undefined, error: message }];
|
|
220
|
+
case 3: return [2 /*return*/];
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
}); };
|
|
224
|
+
return [4 /*yield*/, create_enduser_session_1('PatA')];
|
|
225
|
+
case 5:
|
|
226
|
+
_c = _k.sent(), patA = _c.enduser, patASDK = _c.enduserSDK;
|
|
227
|
+
return [4 /*yield*/, attempt_booking_1(patASDK, {
|
|
228
|
+
calendarEventTemplateId: restrictedTemplate_1.id,
|
|
229
|
+
startTime: next_slot_1(),
|
|
230
|
+
})];
|
|
231
|
+
case 6:
|
|
232
|
+
firstBooking = _k.sent();
|
|
233
|
+
record('E1: the first booking of a restricted template succeeds', firstBooking.booked, "error=".concat(firstBooking.error));
|
|
234
|
+
return [4 /*yield*/, attempt_booking_1(patASDK, {
|
|
235
|
+
calendarEventTemplateId: restrictedTemplate_1.id,
|
|
236
|
+
startTime: next_slot_1(),
|
|
237
|
+
})];
|
|
238
|
+
case 7:
|
|
239
|
+
secondBooking_1 = _k.sent();
|
|
240
|
+
record('E2: a second booking of the same template is refused', !secondBooking_1.booked, "error=".concat(secondBooking_1.error));
|
|
241
|
+
record('E3: the refusal is the generic message, verbatim', secondBooking_1.error === EXPECTED_REFUSAL, "got ".concat(JSON.stringify(secondBooking_1.error), ", expected ").concat(JSON.stringify(EXPECTED_REFUSAL)));
|
|
242
|
+
record('E4: the refusal leaks no template title, date or host', !['Consult', 'Follow-up', String(hostUserId_1), String(patA.id)].some(function (s) { return secondBooking_1.error.includes(s); }), "the public booking page is unauthenticated, so any detail is an oracle \u2014 got ".concat(JSON.stringify(secondBooking_1.error)));
|
|
243
|
+
return [4 /*yield*/, attempt_booking_1(patASDK, {
|
|
244
|
+
calendarEventTemplateId: restrictedTemplate_1.id,
|
|
245
|
+
startTime: next_slot_1(),
|
|
246
|
+
userId: otherHostUserId,
|
|
247
|
+
})];
|
|
248
|
+
case 8:
|
|
249
|
+
otherHostBooking = _k.sent();
|
|
250
|
+
record('E5: the block is per TEMPLATE, not per provider — the other host is refused too', !otherHostBooking.booked && otherHostBooking.error === EXPECTED_REFUSAL, "booked=".concat(otherHostBooking.booked, " error=").concat(otherHostBooking.error));
|
|
251
|
+
return [4 /*yield*/, attempt_booking_1(patASDK, {
|
|
252
|
+
calendarEventTemplateId: restrictedTemplate_1.id,
|
|
253
|
+
startTime: next_slot_1(),
|
|
254
|
+
scheduledBy: hostUserId_1,
|
|
255
|
+
})];
|
|
256
|
+
case 9:
|
|
257
|
+
scheduledByBooking = _k.sent();
|
|
258
|
+
record('E5b: a staff-sent link (scheduledBy) is NOT an exemption', !scheduledByBooking.booked && scheduledByBooking.error === EXPECTED_REFUSAL, "booked=".concat(scheduledByBooking.booked, " error=").concat(scheduledByBooking.error));
|
|
259
|
+
return [4 /*yield*/, attempt_booking_1(patASDK, {
|
|
260
|
+
calendarEventTemplateId: unrestrictedTemplate.id,
|
|
261
|
+
startTime: next_slot_1(),
|
|
262
|
+
})];
|
|
263
|
+
case 10:
|
|
264
|
+
unrestrictedBooking = _k.sent();
|
|
265
|
+
record('E6: a template WITHOUT the setting is unaffected (the default for every org)', unrestrictedBooking.booked, "error=".concat(unrestrictedBooking.error));
|
|
266
|
+
return [4 /*yield*/, create_enduser_session_1('PatB')];
|
|
267
|
+
case 11:
|
|
268
|
+
patBSDK = (_k.sent()).enduserSDK;
|
|
269
|
+
return [4 /*yield*/, attempt_booking_1(patBSDK, {
|
|
270
|
+
calendarEventTemplateId: restrictedTemplate_1.id,
|
|
271
|
+
startTime: next_slot_1(),
|
|
272
|
+
})];
|
|
273
|
+
case 12:
|
|
274
|
+
patBBooking = _k.sent();
|
|
275
|
+
record("E7: another patient's appointment never blocks", patBBooking.booked, "error=".concat(patBBooking.error));
|
|
276
|
+
freeing_case = function (label, overrides, detail) { return __awaiter(void 0, void 0, void 0, function () {
|
|
277
|
+
var _a, enduser, enduserSDK, result;
|
|
278
|
+
return __generator(this, function (_b) {
|
|
279
|
+
switch (_b.label) {
|
|
280
|
+
case 0: return [4 /*yield*/, create_enduser_session_1('Freeing')];
|
|
281
|
+
case 1:
|
|
282
|
+
_a = _b.sent(), enduser = _a.enduser, enduserSDK = _a.enduserSDK;
|
|
283
|
+
return [4 /*yield*/, give_upcoming_event_1(enduser.id, restrictedTemplate_1.id, overrides(enduser.id))];
|
|
284
|
+
case 2:
|
|
285
|
+
_b.sent();
|
|
286
|
+
return [4 /*yield*/, attempt_booking_1(enduserSDK, {
|
|
287
|
+
calendarEventTemplateId: restrictedTemplate_1.id,
|
|
288
|
+
startTime: next_slot_1(),
|
|
289
|
+
})];
|
|
290
|
+
case 3:
|
|
291
|
+
result = _b.sent();
|
|
292
|
+
record(label, result.booked, "".concat(detail, " \u2014 error=").concat(result.error));
|
|
293
|
+
return [2 /*return*/];
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
}); };
|
|
297
|
+
return [4 /*yield*/, freeing_case('E8: a cancelled upcoming event frees up rebooking', function () { return ({ cancelledAt: new Date() }); }, 'cancelledAt set')];
|
|
298
|
+
case 13:
|
|
299
|
+
_k.sent();
|
|
300
|
+
return [4 /*yield*/, freeing_case('E9: a no-showed upcoming event frees up rebooking', function () { return ({ noShowedAt: new Date() }); }, 'noShowedAt set')];
|
|
301
|
+
case 14:
|
|
302
|
+
_k.sent();
|
|
303
|
+
return [4 /*yield*/, freeing_case('E10: a rescheduled-away upcoming event frees up rebooking', function () { return ({ rescheduledAt: new Date() }); }, 'rescheduledAt set')];
|
|
304
|
+
case 15:
|
|
305
|
+
_k.sent();
|
|
306
|
+
return [4 /*yield*/, freeing_case("E11: an attendeeStatuses 'No-showed' entry frees up rebooking", function (enduserId) { return ({ attendeeStatuses: [{ id: enduserId, status: 'No-showed', at: new Date() }] }); }, "per-attendee status, spelled 'No-showed'")
|
|
307
|
+
/* --- A PAST unresolved event never blocks --- */
|
|
308
|
+
];
|
|
309
|
+
case 16:
|
|
310
|
+
_k.sent();
|
|
311
|
+
return [4 /*yield*/, create_enduser_session_1('PastPat')];
|
|
312
|
+
case 17:
|
|
313
|
+
_d = _k.sent(), pastPat = _d.enduser, pastPatSDK = _d.enduserSDK;
|
|
314
|
+
return [4 /*yield*/, give_upcoming_event_1(pastPat.id, restrictedTemplate_1.id, {
|
|
315
|
+
startTimeInMS: Date.now() - 3 * ONE_DAY_IN_MS, // nobody ever marked it complete
|
|
316
|
+
})];
|
|
317
|
+
case 18:
|
|
318
|
+
_k.sent();
|
|
319
|
+
return [4 /*yield*/, attempt_booking_1(pastPatSDK, {
|
|
320
|
+
calendarEventTemplateId: restrictedTemplate_1.id,
|
|
321
|
+
startTime: next_slot_1(),
|
|
322
|
+
userId: otherHostUserId,
|
|
323
|
+
})];
|
|
324
|
+
case 19:
|
|
325
|
+
pastBooking = _k.sent();
|
|
326
|
+
record('E12: a PAST unresolved appointment never blocks', pastBooking.booked, "error=".concat(pastBooking.error));
|
|
327
|
+
return [4 /*yield*/, create_enduser_session_1('GroupPat')];
|
|
328
|
+
case 20:
|
|
329
|
+
_e = _k.sent(), groupPat = _e.enduser, groupPatSDK = _e.enduserSDK;
|
|
330
|
+
return [4 /*yield*/, create_enduser_session_1('GroupOther')];
|
|
331
|
+
case 21:
|
|
332
|
+
groupOther = (_k.sent()).enduser;
|
|
333
|
+
return [4 /*yield*/, give_upcoming_event_1(groupPat.id, restrictedTemplate_1.id, {
|
|
334
|
+
attendees: [
|
|
335
|
+
{ type: 'enduser', id: groupOther.id },
|
|
336
|
+
{ type: 'enduser', id: groupPat.id },
|
|
337
|
+
],
|
|
338
|
+
enduserAttendeeLimit: 5,
|
|
339
|
+
})];
|
|
340
|
+
case 22:
|
|
341
|
+
_k.sent();
|
|
342
|
+
return [4 /*yield*/, attempt_booking_1(groupPatSDK, {
|
|
343
|
+
calendarEventTemplateId: restrictedTemplate_1.id,
|
|
344
|
+
startTime: next_slot_1(),
|
|
345
|
+
userId: otherHostUserId,
|
|
346
|
+
})];
|
|
347
|
+
case 23:
|
|
348
|
+
groupBooking = _k.sent();
|
|
349
|
+
record('E13: a group event blocks a patient who is NOT its first attendee', !groupBooking.booked && groupBooking.error === EXPECTED_REFUSAL, "booked=".concat(groupBooking.booked, " error=").concat(groupBooking.error));
|
|
350
|
+
return [4 /*yield*/, create_enduser_session_1('RetryPat')];
|
|
351
|
+
case 24:
|
|
352
|
+
retrySDK = (_k.sent()).enduserSDK;
|
|
353
|
+
retrySlot = next_slot_1();
|
|
354
|
+
retryArgs = {
|
|
355
|
+
calendarEventTemplateId: restrictedTemplate_1.id,
|
|
356
|
+
startTime: retrySlot,
|
|
357
|
+
userId: otherHostUserId,
|
|
358
|
+
};
|
|
359
|
+
return [4 /*yield*/, attempt_booking_1(retrySDK, retryArgs)];
|
|
360
|
+
case 25:
|
|
361
|
+
retryFirst = _k.sent();
|
|
362
|
+
return [4 /*yield*/, attempt_booking_1(retrySDK, retryArgs)];
|
|
363
|
+
case 26:
|
|
364
|
+
retrySecond = _k.sent();
|
|
365
|
+
record('E13b: re-submitting the SAME slot is not refused as a duplicate', retryFirst.booked && retrySecond.error !== EXPECTED_REFUSAL, "first=".concat(retryFirst.booked, " secondError=").concat(retrySecond.error, " \u2014 the duplicate block must not ")
|
|
366
|
+
+ 'swallow the idempotent-replay / slot-taken handling for the very booking being retried '
|
|
367
|
+
+ '(the first booking is wasSelfScheduled, which is what excludeSlot is limited to)');
|
|
368
|
+
return [4 /*yield*/, create_enduser_session_1('GroupCancelled')];
|
|
369
|
+
case 27:
|
|
370
|
+
_f = _k.sent(), groupCancelled = _f.enduser, groupCancelledSDK = _f.enduserSDK;
|
|
371
|
+
return [4 /*yield*/, give_upcoming_event_1(groupCancelled.id, restrictedTemplate_1.id, {
|
|
372
|
+
attendees: [{ type: 'enduser', id: groupCancelled.id }],
|
|
373
|
+
cancelledGroupAttendees: [{ at: new Date(), id: groupCancelled.id }],
|
|
374
|
+
enduserAttendeeLimit: 5,
|
|
375
|
+
})];
|
|
376
|
+
case 28:
|
|
377
|
+
_k.sent();
|
|
378
|
+
return [4 /*yield*/, attempt_booking_1(groupCancelledSDK, {
|
|
379
|
+
calendarEventTemplateId: restrictedTemplate_1.id,
|
|
380
|
+
startTime: next_slot_1(),
|
|
381
|
+
userId: otherHostUserId,
|
|
382
|
+
})];
|
|
383
|
+
case 29:
|
|
384
|
+
groupCancelledBooking = _k.sent();
|
|
385
|
+
record('E13c: a cancelledGroupAttendees-only cancellation frees up rebooking', groupCancelledBooking.booked, "Healthie-synced group cancels write only this mirror \u2014 error=".concat(groupCancelledBooking.error));
|
|
386
|
+
return [4 /*yield*/, create_enduser_session_1('ReschedPat')];
|
|
387
|
+
case 30:
|
|
388
|
+
reschedSDK = (_k.sent()).enduserSDK;
|
|
389
|
+
return [4 /*yield*/, attempt_booking_1(reschedSDK, {
|
|
390
|
+
calendarEventTemplateId: restrictedTemplate_1.id,
|
|
391
|
+
startTime: next_slot_1(),
|
|
392
|
+
userId: otherHostUserId,
|
|
393
|
+
})];
|
|
394
|
+
case 31:
|
|
395
|
+
reschedFirst = _k.sent();
|
|
396
|
+
if (!reschedFirst.booked) return [3 /*break*/, 33];
|
|
397
|
+
return [4 /*yield*/, attempt_booking_1(reschedSDK, {
|
|
398
|
+
calendarEventTemplateId: restrictedTemplate_1.id,
|
|
399
|
+
startTime: next_slot_1(),
|
|
400
|
+
userId: otherHostUserId,
|
|
401
|
+
rescheduledCalendarEventId: reschedFirst.event.id,
|
|
402
|
+
})];
|
|
403
|
+
case 32:
|
|
404
|
+
_g = _k.sent();
|
|
405
|
+
return [3 /*break*/, 34];
|
|
406
|
+
case 33:
|
|
407
|
+
_g = { booked: false, error: 'initial booking failed' };
|
|
408
|
+
_k.label = 34;
|
|
409
|
+
case 34:
|
|
410
|
+
rescheduled = _g;
|
|
411
|
+
record('E14: rescheduling is not blocked by the event it replaces', rescheduled.booked, "initialBooked=".concat(reschedFirst.booked, " error=").concat(rescheduled.error));
|
|
412
|
+
return [4 /*yield*/, create_enduser_session_1('ProbedBooked')];
|
|
413
|
+
case 35:
|
|
414
|
+
_h = _k.sent(), probedBooked = _h.enduser, probedBookedSDK = _h.enduserSDK;
|
|
415
|
+
return [4 /*yield*/, create_enduser_session_1('ProbedFree')];
|
|
416
|
+
case 36:
|
|
417
|
+
probedFreeSDK = (_k.sent()).enduserSDK;
|
|
418
|
+
return [4 /*yield*/, give_upcoming_event_1(probedBooked.id, restrictedTemplate_1.id)
|
|
419
|
+
// Sunday 10:00 ET, outside the hosts' Mon-Fri availability
|
|
420
|
+
];
|
|
421
|
+
case 37:
|
|
422
|
+
_k.sent();
|
|
423
|
+
closedSlot = bookingStart_1.startOf('week').plus({ days: 6 }).set({ hour: 10, minute: 0, second: 0, millisecond: 0 }).toJSDate();
|
|
424
|
+
probeArgs = { calendarEventTemplateId: restrictedTemplate_1.id, startTime: closedSlot };
|
|
425
|
+
return [4 /*yield*/, Promise.all([
|
|
426
|
+
attempt_booking_1(probedBookedSDK, probeArgs),
|
|
427
|
+
attempt_booking_1(probedFreeSDK, __assign(__assign({}, probeArgs), { userId: otherHostUserId })),
|
|
428
|
+
])];
|
|
429
|
+
case 38:
|
|
430
|
+
_j = _k.sent(), probeBooked = _j[0], probeFree = _j[1];
|
|
431
|
+
UNAVAILABLE = "This timeslot is no longer available";
|
|
432
|
+
record('E15: an unavailable slot fails identically with or without an upcoming duplicate', !probeBooked.booked && !probeFree.booked && probeBooked.error === UNAVAILABLE && probeFree.error === UNAVAILABLE, "booked-patient error=".concat(JSON.stringify(probeBooked.error), ", free-patient error=").concat(JSON.stringify(probeFree.error)));
|
|
433
|
+
return [4 /*yield*/, sdk_1.api.calendar_events.getSome({ filter: { startTimeInMS: closedSlot.getTime() } })];
|
|
434
|
+
case 39:
|
|
435
|
+
leftovers = _k.sent();
|
|
436
|
+
i = 0;
|
|
437
|
+
_k.label = 40;
|
|
438
|
+
case 40:
|
|
439
|
+
if (!(i < 10 && leftovers.length)) return [3 /*break*/, 44];
|
|
440
|
+
return [4 /*yield*/, new Promise(function (r) { return setTimeout(r, 200); })];
|
|
441
|
+
case 41:
|
|
442
|
+
_k.sent();
|
|
443
|
+
return [4 /*yield*/, sdk_1.api.calendar_events.getSome({ filter: { startTimeInMS: closedSlot.getTime() } })];
|
|
444
|
+
case 42:
|
|
445
|
+
leftovers = _k.sent();
|
|
446
|
+
_k.label = 43;
|
|
447
|
+
case 43:
|
|
448
|
+
i++;
|
|
449
|
+
return [3 /*break*/, 40];
|
|
450
|
+
case 44:
|
|
451
|
+
record('E15b: the probes leave no placeholder event behind', leftovers.length === 0, "found ".concat(leftovers.length, " event(s) at the closed slot"));
|
|
452
|
+
return [3 /*break*/, 50];
|
|
453
|
+
case 45:
|
|
454
|
+
if (!tenant) return [3 /*break*/, 49];
|
|
455
|
+
_k.label = 46;
|
|
456
|
+
case 46:
|
|
457
|
+
_k.trys.push([46, 48, , 49]);
|
|
458
|
+
return [4 /*yield*/, tenant.teardown()];
|
|
459
|
+
case 47:
|
|
460
|
+
_k.sent();
|
|
461
|
+
return [3 /*break*/, 49];
|
|
462
|
+
case 48:
|
|
463
|
+
e_1 = _k.sent();
|
|
464
|
+
console.error('teardown failed', e_1);
|
|
465
|
+
return [3 /*break*/, 49];
|
|
466
|
+
case 49: return [7 /*endfinally*/];
|
|
467
|
+
case 50: return [2 /*return*/, checks];
|
|
468
|
+
}
|
|
469
|
+
});
|
|
470
|
+
}); };
|
|
471
|
+
/** Asserting wrapper, for standalone runs and for sequential use in the suite. */
|
|
472
|
+
export var booking_prevent_upcoming_duplicate_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
473
|
+
var _a, _b;
|
|
474
|
+
return __generator(this, function (_c) {
|
|
475
|
+
switch (_c.label) {
|
|
476
|
+
case 0:
|
|
477
|
+
_a = assert_checks;
|
|
478
|
+
_b = ['Prevent booking when an upcoming duplicate exists'];
|
|
479
|
+
return [4 /*yield*/, booking_prevent_upcoming_duplicate_checks()];
|
|
480
|
+
case 1:
|
|
481
|
+
_a.apply(void 0, _b.concat([_c.sent()]));
|
|
482
|
+
return [2 /*return*/];
|
|
483
|
+
}
|
|
484
|
+
});
|
|
485
|
+
}); };
|
|
486
|
+
/** Enrolls this suite in the auto-discovered parallel pool — see run_discovered_isolated_suites. */
|
|
487
|
+
export var ISOLATED_SUITE = { name: 'Prevent booking when an upcoming duplicate exists', run: booking_prevent_upcoming_duplicate_checks };
|
|
488
|
+
// Allow running this test file independently
|
|
489
|
+
if (require.main === module) {
|
|
490
|
+
console.log("\uD83C\uDF10 Using API URL: ".concat(host));
|
|
491
|
+
booking_prevent_upcoming_duplicate_tests()
|
|
492
|
+
.then(function () {
|
|
493
|
+
console.log("✅ Prevent-duplicate-booking test suite completed successfully");
|
|
494
|
+
process.exit(0);
|
|
495
|
+
})
|
|
496
|
+
.catch(function (error) {
|
|
497
|
+
console.error("❌ Prevent-duplicate-booking test suite failed:", error);
|
|
498
|
+
process.exit(1);
|
|
499
|
+
});
|
|
500
|
+
}
|
|
501
|
+
//# sourceMappingURL=booking_prevent_upcoming_duplicate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"booking_prevent_upcoming_duplicate.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/booking_prevent_upcoming_duplicate.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Check } from "../setup_isolated";
|
|
1
|
+
import { Check, IsolatedSuite } from "../setup_isolated";
|
|
2
2
|
/**
|
|
3
3
|
* Schema round-trip for `Form.syncEnduserFieldsToEHR` and `Form.enduserFieldsSync`, the two fields
|
|
4
4
|
* behind "Sync Patient Fields to Healthie".
|
|
@@ -18,4 +18,6 @@ import { Check } from "../setup_isolated";
|
|
|
18
18
|
export declare const enduser_fields_sync_checks: () => Promise<Check[]>;
|
|
19
19
|
/** Asserting wrapper, for standalone runs and for sequential use in the suite. */
|
|
20
20
|
export declare const enduser_fields_sync_tests: () => Promise<void>;
|
|
21
|
+
/** Enrolls this suite in the auto-discovered parallel pool — see run_discovered_isolated_suites. */
|
|
22
|
+
export declare const ISOLATED_SUITE: IsolatedSuite;
|
|
21
23
|
//# sourceMappingURL=enduser_fields_sync.test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enduser_fields_sync.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/enduser_fields_sync.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,
|
|
1
|
+
{"version":3,"file":"enduser_fields_sync.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/enduser_fields_sync.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,EAEL,aAAa,EACd,MAAM,mBAAmB,CAAA;AAM1B;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,0BAA0B,QAAa,QAAQ,KAAK,EAAE,CAsGlE,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,qBAErC,CAAA;AAED,oGAAoG;AACpG,eAAO,MAAM,cAAc,EAAE,aAAkG,CAAA"}
|
|
@@ -194,6 +194,8 @@ export var enduser_fields_sync_tests = function () { return __awaiter(void 0, vo
|
|
|
194
194
|
}
|
|
195
195
|
});
|
|
196
196
|
}); };
|
|
197
|
+
/** Enrolls this suite in the auto-discovered parallel pool — see run_discovered_isolated_suites. */
|
|
198
|
+
export var ISOLATED_SUITE = { name: 'Enduser fields sync schema round-trip', run: enduser_fields_sync_checks };
|
|
197
199
|
// Allow running this test file independently
|
|
198
200
|
if (require.main === module) {
|
|
199
201
|
console.log("\uD83C\uDF10 Using API URL: ".concat(host));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enduser_fields_sync.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/enduser_fields_sync.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC;AAExC,OAAO,EACL,aAAa,EAEb,qBAAqB,
|
|
1
|
+
{"version":3,"file":"enduser_fields_sync.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/enduser_fields_sync.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { Check } from "../setup_isolated";
|
|
1
|
+
import { Check, IsolatedSuite } from "../setup_isolated";
|
|
2
2
|
export declare const enduser_observations_auto_review_checks: () => Promise<Check[]>;
|
|
3
3
|
/** Asserting wrapper, for standalone runs and for sequential use in the suite. */
|
|
4
4
|
export declare const enduser_observations_auto_review_tests: () => Promise<void>;
|
|
5
|
+
/** Enrolls this suite in the auto-discovered parallel pool — see run_discovered_isolated_suites. */
|
|
6
|
+
export declare const ISOLATED_SUITE: IsolatedSuite;
|
|
5
7
|
//# sourceMappingURL=enduser_observations_auto_review.test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enduser_observations_auto_review.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/enduser_observations_auto_review.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,
|
|
1
|
+
{"version":3,"file":"enduser_observations_auto_review.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/enduser_observations_auto_review.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,EAEL,aAAa,EACd,MAAM,mBAAmB,CAAA;AAwC1B,eAAO,MAAM,uCAAuC,QAAa,QAAQ,KAAK,EAAE,CAmS/E,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,sCAAsC,qBAElD,CAAA;AAED,oGAAoG;AACpG,eAAO,MAAM,cAAc,EAAE,aAAqG,CAAA"}
|
|
@@ -367,6 +367,8 @@ export var enduser_observations_auto_review_tests = function () { return __await
|
|
|
367
367
|
}
|
|
368
368
|
});
|
|
369
369
|
}); };
|
|
370
|
+
/** Enrolls this suite in the auto-discovered parallel pool — see run_discovered_isolated_suites. */
|
|
371
|
+
export var ISOLATED_SUITE = { name: 'Vital auto-review on create', run: enduser_observations_auto_review_checks };
|
|
370
372
|
// Allow running this test file independently
|
|
371
373
|
if (require.main === module) {
|
|
372
374
|
console.log("\uD83C\uDF10 Using API URL: ".concat(host));
|