# 3. SMS Integration — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: sms_integration.md — every feature, sub-feature, and rule covered

---

## Test Execution Policy
- Zero tolerance: any deviation from documented behavior = FAILED = bug
- Every bug is immediately logged/reported (Bug ID, feature, sub-feature,
  expected vs actual, severity) and fixed 100% before the group passes
- Feature group passes only at 100% test pass rate

## Coverage Matrix
| Feature | Sub-feature / Rule | Test IDs |
|---------|--------------------|----------|
| 3.1 OTP for Login Verification | OTP: the OTP (the OTP, the user, the phone, the code, the expiry) | TC-SA-20-03-001 |
| 3.1 OTP for Login Verification | User: the user (the user, the phone, the OTP) | TC-SA-20-03-002 |
| 3.1 OTP for Login Verification | Phone number: the phone (the phone number of the user, the format) | TC-SA-20-03-003 |
| 3.1 OTP for Login Verification | OTP code: the code (the code of the OTP, the digits) | TC-SA-20-03-004 |
| 3.1 OTP for Login Verification | OTP expiry: the expiry (the expiry of the OTP, the duration) | TC-SA-20-03-005 |
| 3.1 OTP for Login Verification | OTP status: the status (the sent, the verified, the expired) | TC-SA-20-03-006 |
| 3.1 OTP for Login Verification | OTP resend: the resend (the resend of the OTP, the limit, the cooldown) | TC-SA-20-03-007 |
| 3.1 OTP for Login Verification | Audit logging of the OTP sending | TC-SA-20-03-008 |
| 3.1 OTP for Login Verification | Rule: the OTP is the verification (the OTP, the user, the phone, the code, the expiry); the OTP is the proof | TC-SA-20-03-001 |
| 3.1 OTP for Login Verification | Rule: the user is the recipient (the user, the phone, the OTP); the user is the target | TC-SA-20-03-002 |
| 3.1 OTP for Login Verification | Rule: the phone number is the channel (the phone number of the user, the format); the phone is the medium | TC-SA-20-03-003 |
| 3.1 OTP for Login Verification | Rule: the OTP expiry is the limit (the expiry of the OTP, the duration); the expiry is the control | TC-SA-20-03-005 |
| 3.1 OTP for Login Verification | Rule: the OTP is sent (the OTPs, the users, the phones, the codes); the verification is managed | TC-SA-20-03-006 |
| 3.1 OTP for Login Verification | Rule: OTP sending is audit-logged with the OTP, user, and timestamp | TC-SA-20-03-008 |
| 3.2 Important Alerts via SMS | Alert: the alert (the alert, the user, the content, the date) | TC-SA-20-03-009 |
| 3.2 Important Alerts via SMS | User: the user (the user, the phone, the alert) | TC-SA-20-03-010 |
| 3.2 Important Alerts via SMS | Alert content: the content (the content of the alert, the text, the type) | TC-SA-20-03-011 |
| 3.2 Important Alerts via SMS | Alert type: the type (the type of the alert, e.g., the payment, the expiry, the security) | TC-SA-20-03-012 |
| 3.2 Important Alerts via SMS | Alert date: the date (the date of the alert, the time) | TC-SA-20-03-013 |
| 3.2 Important Alerts via SMS | Alert status: the status (the sent, the delivered, the read) | TC-SA-20-03-014 |
| 3.2 Important Alerts via SMS | Alert view: the view (the alerts, the users, the content, the dates) | TC-SA-20-03-015 |
| 3.2 Important Alerts via SMS | Audit logging of the alert sending | TC-SA-20-03-016 |
| 3.2 Important Alerts via SMS | Rule: the alert is the notification (the alert, the user, the content, the date); the alert is the message | TC-SA-20-03-009 |
| 3.2 Important Alerts via SMS | Rule: the user is the recipient (the user, the phone, the alert); the user is the target | TC-SA-20-03-010 |
| 3.2 Important Alerts via SMS | Rule: the alert content is the message (the content of the alert, the text, the type); the content is the payload | TC-SA-20-03-011 |
| 3.2 Important Alerts via SMS | Rule: the alert type is the category (the type of the alert, e.g., the payment, the expiry, the security); the type is the segment | TC-SA-20-03-012 |
| 3.2 Important Alerts via SMS | Rule: the alert is sent (the alerts, the users, the content, the dates); the notification is managed | TC-SA-20-03-015 |
| 3.2 Important Alerts via SMS | Rule: alert sending is audit-logged with the alert, user, and timestamp | TC-SA-20-03-016 |
| 3.3 Bulk SMS for Promotions | Bulk SMS: the SMS (the SMS, the audience, the content, the date) | TC-SA-20-03-017 |
| 3.3 Bulk SMS for Promotions | Audience: the audience (the audience of the SMS, the segment, the count) | TC-SA-20-03-018 |
| 3.3 Bulk SMS for Promotions | SMS content: the content (the content of the SMS, the text, the offer) | TC-SA-20-03-019 |
| 3.3 Bulk SMS for Promotions | Send date: the date (the date of the send, the time) | TC-SA-20-03-020 |
| 3.3 Bulk SMS for Promotions | Send status: the status (the scheduled, the sent, the completed) | TC-SA-20-03-021 |
| 3.3 Bulk SMS for Promotions | Delivery rate: the rate (the rate of the deliveries, the percentage) | TC-SA-20-03-022 |
| 3.3 Bulk SMS for Promotions | SMS view: the view (the SMSs, the audiences, the content, the dates) | TC-SA-20-03-023 |
| 3.3 Bulk SMS for Promotions | Audit logging of the bulk SMS sending | TC-SA-20-03-024 |
| 3.3 Bulk SMS for Promotions | Rule: the bulk SMS is the broadcast (the SMS, the audience, the content, the date); the SMS is the message | TC-SA-20-03-017 |
| 3.3 Bulk SMS for Promotions | Rule: the audience is the target (the audience of the SMS, the segment, the count); the audience is the recipient | TC-SA-20-03-018 |
| 3.3 Bulk SMS for Promotions | Rule: the SMS content is the message (the content of the SMS, the text, the offer); the content is the payload | TC-SA-20-03-019 |
| 3.3 Bulk SMS for Promotions | Rule: the delivery rate is the measure (the rate of the deliveries, the percentage); the rate is the engagement | TC-SA-20-03-022 |
| 3.3 Bulk SMS for Promotions | Rule: the bulk is sent (the SMSs, the audiences, the content, the dates); the broadcast is managed | TC-SA-20-03-021 |
| 3.3 Bulk SMS for Promotions | Rule: bulk SMS sending is audit-logged with the SMS, audience, and timestamp | TC-SA-20-03-024 |
| 3.4 Regional Language Support | Language: the language (the language, the region, the SMS) | TC-SA-20-03-025 |
| 3.4 Regional Language Support | Region: the region (the region of the language, e.g., the state, the country) | TC-SA-20-03-026 |
| 3.4 Regional Language Support | SMS content: the content (the content of the SMS, the text, the language) | TC-SA-20-03-027 |
| 3.4 Regional Language Support | Language selection: the selection (the selection of the language, the user, the region) | TC-SA-20-03-028 |
| 3.4 Regional Language Support | Language status: the status (the active, the inactive) | TC-SA-20-03-029 |
| 3.4 Regional Language Support | Language view: the view (the languages, the regions, the content) | TC-SA-20-03-030 |
| 3.4 Regional Language Support | Language export: the export (the languages, the format, the region) | TC-SA-20-03-031 |
| 3.4 Regional Language Support | Audit logging of the language configuration | TC-SA-20-03-032 |
| 3.4 Regional Language Support | Rule: the language is the medium (the language, the region, the SMS); the language is the localization | TC-SA-20-03-025 |
| 3.4 Regional Language Support | Rule: the region is the location (the region of the language, e.g., the state, the country); the region is the geography | TC-SA-20-03-026 |
| 3.4 Regional Language Support | Rule: the SMS content is the message (the content of the SMS, the text, the language); the content is the payload | TC-SA-20-03-027 |
| 3.4 Regional Language Support | Rule: the language selection is the control (the selection of the language, the user, the region); the selection is the choice | TC-SA-20-03-028 |
| 3.4 Regional Language Support | Rule: the language is supported (the languages, the regions, the content); the localization is managed | TC-SA-20-03-030 |
| 3.4 Regional Language Support | Rule: language configuration is audit-logged with the language, region, and timestamp | TC-SA-20-03-032 |

## 3.1 OTP for Login Verification

### TC-SA-20-03-001 — OTP: the OTP (the OTP, the user, the phone, the code, the expiry); the OTP is the proof
**Type:** Positive
**Covers:** 3.1 → OTP: the OTP (the OTP, the user, the phone, the code, the expiry); Rule: the OTP is the verification (the OTP, the user, the phone, the code, the expiry); the OTP is the proof
**Preconditions:** Super Admin is logged in; a user with a registered phone number exists.
**Steps:**
1. Open Marketing & Communication → SMS Integration → OTP for Login Verification.
2. Send the OTP: the OTP (the OTP, the user, the phone, the code, the expiry) — verify the OTP is the verification.
3. Verify the OTP shows the user, the phone, the code, and the expiry.
4. The user logs in — verify the OTP is sent to the user's phone.
**Expected Result:** The OTP is sent — the OTP, the user, the phone, the code, and the expiry are the proof.
**Priority:** Critical

### TC-SA-20-03-002 — User: the user (the user, the phone, the OTP); the user is the target
**Type:** Positive
**Covers:** 3.1 → User: the user (the user, the phone, the OTP); Rule: the user is the recipient (the user, the phone, the OTP); the user is the target
**Preconditions:** Users with registered phone numbers exist.
**Steps:**
1. Select the user: the user (the user, the phone, the OTP) — verify the user is the recipient.
2. Verify the user shows the phone and the OTP.
3. Verify the OTP is sent only to the selected user's phone.
**Expected Result:** The user is selected — the user, the phone, and the OTP are the target.
**Priority:** High

### TC-SA-20-03-003 — Phone number: the phone (the phone number of the user, the format); the phone is the medium
**Type:** Edge
**Covers:** 3.1 → Phone number: the phone (the phone number of the user, the format); Rule: the phone number is the channel (the phone number of the user, the format); the phone is the medium
**Preconditions:** A user with a valid phone number exists; a user with a malformed/missing phone number (format edge) also exists.
**Steps:**
1. Verify the phone number: the phone (the phone number of the user, the format) — verify the phone number is the channel.
2. Trigger an OTP for the valid user — verify the SMS is delivered to the correctly formatted number.
3. Trigger an OTP for the malformed/missing number — verify the send fails gracefully with a clear error (no OTP sent to a wrong number).
**Expected Result:** The phone number is verified — the phone number of the user and the format are the medium; malformed numbers are rejected.
**Priority:** High

### TC-SA-20-03-004 — OTP code: the code (the code of the OTP, the digits); the code is the secret
**Type:** Positive
**Covers:** 3.1 → OTP code: the code (the code of the OTP, the digits)
**Preconditions:** An OTP has been sent to a user.
**Steps:**
1. Generate the OTP code: the code (the code of the OTP, the digits) — verify the OTP code is the secret.
2. Verify the code is the correct number of digits.
3. Enter the correct code — verify login is verified; enter a wrong code — verify it is rejected.
**Expected Result:** The OTP code is generated — the code of the OTP and the digits are the secret; only the correct code verifies.
**Priority:** High

### TC-SA-20-03-005 — OTP expiry: the expiry (the expiry of the OTP, the duration); the expiry is the control
**Type:** Edge
**Covers:** 3.1 → OTP expiry: the expiry (the expiry of the OTP, the duration); Rule: the OTP expiry is the limit (the expiry of the OTP, the duration); the expiry is the control
**Preconditions:** An OTP with a defined expiry duration has been sent; the expiry is about to elapse (boundary edge).
**Steps:**
1. Set the OTP expiry: the expiry (the expiry of the OTP, the duration) — verify the OTP expiry is the limit.
2. Enter the code before expiry — verify it is accepted.
3. Enter the same code after expiry — verify it is rejected (expired OTP cannot be used).
**Expected Result:** The OTP expiry works — the expiry of the OTP and the duration are the control; an expired OTP is rejected.
**Priority:** High

### TC-SA-20-03-006 — OTP status: the status (the sent, the verified, the expired); the verification is managed
**Type:** Positive
**Covers:** 3.1 → OTP status: the status (the sent, the verified, the expired); Rule: the OTP is sent (the OTPs, the users, the phones, the codes); the verification is managed
**Preconditions:** OTPs with sent, verified, and expired statuses exist.
**Steps:**
1. View the OTP status: the status (the sent, the verified, the expired) — verify the OTP status is the state.
2. Verify a freshly sent OTP shows sent; after correct entry, verified; after expiry, expired.
3. Verify the verification is managed (send, verify, expire).
**Expected Result:** The OTP status is shown — the sent, the verified, and the expired are the state; the verification is managed.
**Priority:** High

### TC-SA-20-03-007 — OTP resend: the resend (the resend of the OTP, the limit, the cooldown); the resend is the retry
**Type:** Edge
**Covers:** 3.1 → OTP resend: the resend (the resend of the OTP, the limit, the cooldown)
**Preconditions:** An OTP has been sent; the resend limit and cooldown are configured; a user who resends repeatedly (limit edge) is prepared.
**Steps:**
1. Resend the OTP: the resend (the resend of the OTP, the limit, the cooldown) — verify the resend is the retry.
2. Request a resend before the cooldown elapses — verify it is blocked with a clear message.
3. Request resends up to the limit — verify the limit is enforced (no further resends after the limit).
**Expected Result:** The OTP resend works — the resend of the OTP, the limit, and the cooldown are enforced; no unlimited resends.
**Priority:** High

### TC-SA-20-03-008 — OTP sending is audit-logged with the OTP, user, and timestamp
**Type:** Positive
**Covers:** 3.1 → Audit logging of the OTP sending; Rule: OTP sending is audit-logged with the OTP, user, and timestamp
**Preconditions:** Super Admin has sent an OTP.
**Steps:**
1. Open the audit trail and filter by "OTP".
2. Verify entries show the OTP, the user, and the timestamp.
**Expected Result:** The OTP sending is audit-logged with the OTP, user, and timestamp.
**Priority:** Critical

## 3.2 Important Alerts via SMS

### TC-SA-20-03-009 — Alert: the alert (the alert, the user, the content, the date); the alert is the message
**Type:** Positive
**Covers:** 3.2 → Alert: the alert (the alert, the user, the content, the date); Rule: the alert is the notification (the alert, the user, the content, the date); the alert is the message
**Preconditions:** Super Admin is logged in; a user with a registered phone exists.
**Steps:**
1. Open Marketing & Communication → SMS Integration → Important Alerts via SMS.
2. Send the alert: the alert (the alert, the user, the content, the date) — verify the alert is the notification.
3. Verify the alert shows the user, the content, and the date.
4. Send the alert — verify the user receives the SMS.
**Expected Result:** The alert is sent — the alert, the user, the content, and the date are the message.
**Priority:** Critical

### TC-SA-20-03-010 — User: the user (the user, the phone, the alert); the user is the target
**Type:** Positive
**Covers:** 3.2 → User: the user (the user, the phone, the alert); Rule: the user is the recipient (the user, the phone, the alert); the user is the target
**Preconditions:** Users with registered phones exist.
**Steps:**
1. Select the user: the user (the user, the phone, the alert) — verify the user is the recipient.
2. Verify the user shows the phone and the alert.
3. Verify the alert is sent only to the selected user's phone.
**Expected Result:** The user is selected — the user, the phone, and the alert are the target.
**Priority:** High

### TC-SA-20-03-011 — Alert content: the content (the content of the alert, the text, the type); the content is the payload
**Type:** Positive
**Covers:** 3.2 → Alert content: the content (the content of the alert, the text, the type); Rule: the alert content is the message (the content of the alert, the text, the type); the content is the payload
**Preconditions:** An alert is being configured.
**Steps:**
1. Create the alert content: the content (the content of the alert, the text, the type) — verify the alert content is the message.
2. Verify the content shows the text and the type.
3. Verify the SMS text is within the SMS character limit and renders correctly.
**Expected Result:** The alert content is created — the content of the alert, the text, and the type are the payload.
**Priority:** High

### TC-SA-20-03-012 — Alert type: the type (the type of the alert, e.g., the payment, the expiry, the security); the type is the category
**Type:** Positive
**Covers:** 3.2 → Alert type: the type (the type of the alert, e.g., the payment, the expiry, the security); Rule: the alert type is the category (the type of the alert, e.g., the payment, the expiry, the security); the type is the segment
**Preconditions:** Alerts of payment, expiry, and security types exist.
**Steps:**
1. Set the alert type: the type (the type of the alert, e.g., the payment, the expiry, the security) — verify the alert type is the category.
2. Verify each alert shows its type.
3. Verify a payment event triggers a payment-type alert, an expiry event an expiry-type alert, and a security event a security-type alert.
**Expected Result:** The alert type is set — the type of the alert (the payment, the expiry, the security) is the category.
**Priority:** High

### TC-SA-20-03-013 — Alert date: the date (the date of the alert, the time); the date is the moment
**Type:** Positive
**Covers:** 3.2 → Alert date: the date (the date of the alert, the time)
**Preconditions:** An alert is being sent.
**Steps:**
1. Set the alert date: the date (the date of the alert, the time) — verify the alert date is the moment.
2. Verify the alert is sent at the set date/time.
3. Verify the date is shown on the alert record.
**Expected Result:** The alert date is set — the date of the alert and the time are the moment.
**Priority:** High

### TC-SA-20-03-014 — Alert status: the status (the sent, the delivered, the read); the status is the state
**Type:** Positive
**Covers:** 3.2 → Alert status: the status (the sent, the delivered, the read)
**Preconditions:** Alerts with sent, delivered, and read statuses exist.
**Steps:**
1. View the alert status: the status (the sent, the delivered, the read) — verify the alert status is the state.
2. Verify a freshly sent alert shows sent; after carrier delivery, delivered; after the user reads it, read.
3. Verify the status transitions are correct.
**Expected Result:** The alert status is shown — the sent, the delivered, and the read are the state.
**Priority:** High

### TC-SA-20-03-015 — Alert view: the view (the alerts, the users, the content, the dates); the notification is managed
**Type:** Positive
**Covers:** 3.2 → Alert view: the view (the alerts, the users, the content, the dates); Rule: the alert is sent (the alerts, the users, the content, the dates); the notification is managed
**Preconditions:** Multiple alerts exist.
**Steps:**
1. View the alerts: the view (the alerts, the users, the content, the dates) — verify the alert is sent.
2. Verify each alert shows the user, the content, and the date.
3. Verify the notification is managed (create, send, track).
**Expected Result:** The alerts are viewed — the alerts, the users, the content, and the dates are visible; the notification is managed.
**Priority:** High

### TC-SA-20-03-016 — Alert sending is audit-logged with the alert, user, and timestamp
**Type:** Positive
**Covers:** 3.2 → Audit logging of the alert sending; Rule: alert sending is audit-logged with the alert, user, and timestamp
**Preconditions:** Super Admin has sent an alert.
**Steps:**
1. Open the audit trail and filter by "SMS alert".
2. Verify entries show the alert, the user, and the timestamp.
**Expected Result:** The alert sending is audit-logged with the alert, user, and timestamp.
**Priority:** Critical

## 3.3 Bulk SMS for Promotions

### TC-SA-20-03-017 — Bulk SMS: the SMS (the SMS, the audience, the content, the date); the SMS is the message
**Type:** Positive
**Covers:** 3.3 → Bulk SMS: the SMS (the SMS, the audience, the content, the date); Rule: the bulk SMS is the broadcast (the SMS, the audience, the content, the date); the SMS is the message
**Preconditions:** Super Admin is logged in; an audience is available.
**Steps:**
1. Open Marketing & Communication → SMS Integration → Bulk SMS for Promotions.
2. Send the bulk SMS: the SMS (the SMS, the audience, the content, the date) — verify the bulk SMS is the broadcast.
3. Verify the SMS shows the audience, the content, and the date.
4. Send the bulk SMS — verify all audience members receive it.
**Expected Result:** The bulk SMS is sent — the SMS, the audience, the content, and the date are the message.
**Priority:** Critical

### TC-SA-20-03-018 — Audience: the audience (the audience of the SMS, the segment, the count); the audience is the recipient
**Type:** Positive
**Covers:** 3.3 → Audience: the audience (the audience of the SMS, the segment, the count); Rule: the audience is the target (the audience of the SMS, the segment, the count); the audience is the recipient
**Preconditions:** Multiple audience segments exist.
**Steps:**
1. Select the audience: the audience (the audience of the SMS, the segment, the count) — verify the audience is the target.
2. Verify the audience shows the segment and the count.
3. Verify the bulk SMS is sent only to the selected audience.
**Expected Result:** The audience is selected — the audience of the SMS, the segment, and the count are the recipient.
**Priority:** High

### TC-SA-20-03-019 — SMS content: the content (the content of the SMS, the text, the offer); the content is the payload
**Type:** Positive
**Covers:** 3.3 → SMS content: the content (the content of the SMS, the text, the offer); Rule: the SMS content is the message (the content of the SMS, the text, the offer); the content is the payload
**Preconditions:** A bulk SMS is being configured.
**Steps:**
1. Create the SMS content: the content (the content of the SMS, the text, the offer) — verify the SMS content is the message.
2. Verify the content shows the text and the offer.
3. Verify the text is within the SMS character limit and the offer is valid.
**Expected Result:** The SMS content is created — the content of the SMS, the text, and the offer are the payload.
**Priority:** High

### TC-SA-20-03-020 — Send date: the date (the date of the send, the time); the date is the moment
**Type:** Positive
**Covers:** 3.3 → Send date: the date (the date of the send, the time)
**Preconditions:** A bulk SMS is configured with a future send date.
**Steps:**
1. Set the send date: the date (the date of the send, the time) — verify the send date is the moment.
2. Verify the bulk SMS is not sent before the send date.
3. Wait for the send date — verify the bulk SMS is sent at the exact time.
**Expected Result:** The send date is set — the date of the send and the time are the moment.
**Priority:** High

### TC-SA-20-03-021 — Send status: the status (the scheduled, the sent, the completed); the broadcast is managed
**Type:** Positive
**Covers:** 3.3 → Send status: the status (the scheduled, the sent, the completed); Rule: the bulk is sent (the SMSs, the audiences, the content, the dates); the broadcast is managed
**Preconditions:** Bulk SMS sends with scheduled, sent, and completed statuses exist.
**Steps:**
1. View the send status: the status (the scheduled, the sent, the completed) — verify the send status is the state.
2. Verify a bulk SMS before its send date shows scheduled; after sending, sent; after delivery completes, completed.
3. Verify the broadcast is managed (schedule, send, complete).
**Expected Result:** The send status is shown — the scheduled, the sent, and the completed are the state; the broadcast is managed.
**Priority:** High

### TC-SA-20-03-022 — Delivery rate: the rate (the rate of the deliveries, the percentage); the rate is the engagement
**Type:** Edge
**Covers:** 3.3 → Delivery rate: the rate (the rate of the deliveries, the percentage); Rule: the delivery rate is the measure (the rate of the deliveries, the percentage); the rate is the engagement
**Preconditions:** A bulk SMS has been sent with some failed deliveries; a bulk SMS with zero deliveries (division edge) also exists.
**Steps:**
1. View the delivery rate: the rate (the rate of the deliveries, the percentage) — verify the delivery rate is the measure.
2. Verify the rate is calculated correctly (delivered / sent × 100).
3. View the zero-delivery bulk SMS — verify the rate shows 0% (no division error).
**Expected Result:** The delivery rate is shown — the rate of the deliveries and the percentage are the engagement; a zero-delivery send is handled.
**Priority:** High

### TC-SA-20-03-023 — SMS view: the view (the SMSs, the audiences, the content, the dates); the broadcast is visible
**Type:** Positive
**Covers:** 3.3 → SMS view: the view (the SMSs, the audiences, the content, the dates)
**Preconditions:** Multiple bulk SMS sends exist.
**Steps:**
1. View the bulk SMSs: the view (the SMSs, the audiences, the content, the dates) — verify the broadcast is visible.
2. Verify each SMS shows the audience, the content, and the date.
3. Verify the view supports filtering by audience and date.
**Expected Result:** The bulk SMSs are viewed — the SMSs, the audiences, the content, and the dates are visible.
**Priority:** High

### TC-SA-20-03-024 — Bulk SMS sending is audit-logged with the SMS, audience, and timestamp
**Type:** Positive
**Covers:** 3.3 → Audit logging of the bulk SMS sending; Rule: bulk SMS sending is audit-logged with the SMS, audience, and timestamp
**Preconditions:** Super Admin has sent a bulk SMS.
**Steps:**
1. Open the audit trail and filter by "bulk SMS".
2. Verify entries show the SMS, the audience, and the timestamp.
**Expected Result:** The bulk SMS sending is audit-logged with the SMS, audience, and timestamp.
**Priority:** Critical

## 3.4 Regional Language Support

### TC-SA-20-03-025 — Language: the language (the language, the region, the SMS); the language is the localization
**Type:** Positive
**Covers:** 3.4 → Language: the language (the language, the region, the SMS); Rule: the language is the medium (the language, the region, the SMS); the language is the localization
**Preconditions:** Super Admin is logged in; regional languages are available.
**Steps:**
1. Open Marketing & Communication → SMS Integration → Regional Language Support.
2. Support the regional language: the language (the language, the region, the SMS) — verify the language is the medium.
3. Verify the language shows the region and the SMS.
4. Send an SMS in a regional language — verify it is delivered in that language.
**Expected Result:** The language is supported — the language, the region, and the SMS are the localization.
**Priority:** Critical

### TC-SA-20-03-026 — Region: the region (the region of the language, e.g., the state, the country); the region is the geography
**Type:** Positive
**Covers:** 3.4 → Region: the region (the region of the language, e.g., the state, the country); Rule: the region is the location (the region of the language, e.g., the state, the country); the region is the geography
**Preconditions:** Regions (states, countries) are defined.
**Steps:**
1. Select the region: the region (the region of the language, e.g., the state, the country) — verify the region is the location.
2. Verify the region shows the state/country.
3. Verify SMS content is matched to the user's region.
**Expected Result:** The region is selected — the region of the language (the state, the country) is the geography.
**Priority:** High

### TC-SA-20-03-027 — SMS content: the content (the content of the SMS, the text, the language); the content is the payload
**Type:** Positive
**Covers:** 3.4 → SMS content: the content (the content of the SMS, the text, the language); Rule: the SMS content is the message (the content of the SMS, the text, the language); the content is the payload
**Preconditions:** A regional language is selected.
**Steps:**
1. Create the SMS content: the content (the content of the SMS, the text, the language) — verify the SMS content is the message.
2. Verify the content shows the text in the selected language.
3. Verify the text is within the SMS character limit for the language.
**Expected Result:** The SMS content is created — the content of the SMS, the text, and the language are the payload.
**Priority:** High

### TC-SA-20-03-028 — Language selection: the selection (the selection of the language, the user, the region); the selection is the choice
**Type:** Positive
**Covers:** 3.4 → Language selection: the selection (the selection of the language, the user, the region); Rule: the language selection is the control (the selection of the language, the user, the region); the selection is the choice
**Preconditions:** Multiple languages and regions are configured.
**Steps:**
1. Set the language selection: the selection (the selection of the language, the user, the region) — verify the language selection is the control.
2. Verify the selection shows the language, the user, and the region.
3. Verify a user in a region receives SMS in the region's selected language.
**Expected Result:** The language selection is set — the selection of the language, the user, and the region are the choice.
**Priority:** High

### TC-SA-20-03-029 — Language status: the status (the active, the inactive); the status is the state
**Type:** Positive
**Covers:** 3.4 → Language status: the status (the active, the inactive)
**Preconditions:** Languages with active and inactive statuses exist.
**Steps:**
1. View the language status: the status (the active, the inactive) — verify the language status is the state.
2. Deactivate a language — verify no new SMS is sent in that language.
3. Reactivate it — verify SMS in that language resumes.
**Expected Result:** The language status is shown — the active and the inactive are the state.
**Priority:** High

### TC-SA-20-03-030 — Language view: the view (the languages, the regions, the content); the localization is managed
**Type:** Positive
**Covers:** 3.4 → Language view: the view (the languages, the regions, the content); Rule: the language is supported (the languages, the regions, the content); the localization is managed
**Preconditions:** Multiple languages and regions are configured.
**Steps:**
1. View the languages: the view (the languages, the regions, the content) — verify the language is supported.
2. Verify each language shows the region and the content.
3. Verify the localization is managed (add, edit, deactivate).
**Expected Result:** The languages are viewed — the languages, the regions, and the content are visible; the localization is managed.
**Priority:** High

### TC-SA-20-03-031 — Language export: the export (the languages, the format, the region); the export is the record
**Type:** Positive
**Covers:** 3.4 → Language export: the export (the languages, the format, the region)
**Preconditions:** Languages with content exist.
**Steps:**
1. Export the languages: the export (the languages, the format, the region) — verify the export is the record.
2. Verify the export includes the languages, the format, and the region.
3. Verify the exported file is valid and complete.
**Expected Result:** The languages are exported — the languages, the format, and the region are the record.
**Priority:** Medium

### TC-SA-20-03-032 — Language configuration is audit-logged with the language, region, and timestamp
**Type:** Positive
**Covers:** 3.4 → Audit logging of the language configuration; Rule: language configuration is audit-logged with the language, region, and timestamp
**Preconditions:** Super Admin has configured a language.
**Steps:**
1. Open the audit trail and filter by "language".
2. Verify entries show the language, the region, and the timestamp.
**Expected Result:** The language configuration is audit-logged with the language, region, and timestamp.
**Priority:** Critical
