# Manual Regression Testing
## **❗ Before Production Deployment**
- [x] Create a PR to check that all terraform changes have been applied
- [x] If needed, apply any changes to prod
## 🚀 After Environment Deployment
### 💚 Testing
- [x] Verify `calendar_integration_identity_mappings` have `customer_salesforce_id` values in their `internal_id` column
- `SELECT * FROM "calendar_integration_identity_mappings" WHERE "calendar_integration_type" = 'TCM' AND "type" = 'CUSTOMER'`
- As an internal fitter...
- [x] Book an appointment
- [x] Verify it is created with proper data in appointment service
- [x] CONFIRMED status
- [x] `created_by` has proper user id and email
- [x] Reschedule an appointment
- [x] Verify it is rescheduled with proper status in appointment service
- [x] Cancel an appointment
- [x] Verify it is canceled with proper status in appointment service
- As a consultant...
- [x] Book an appointment in SF (legacy method)
- [x] Verify it is created with proper data in appointment service
- [x] `created_by` has proper `system`: SALESFORCE
- [x] Cancel an appointment in SF (legacy method)
- [x] Verify it is canceled with proper status in appointment service
- As a TCM fitter...
- [x] Book an appointment
- [x] Verify a customer record has been created in `calendar_integration_identity_mappings`
- [x] Reschedule an appointment (on a different day)
- [x] Verify NO DUPLICATE customer record has been created in `calendar_integration_identity_mappings`
- [x] Cancel an appointment
- As a Sycle fitter...
- [x] Book an appointment
- [x] Reschedule an appointment
- [x] Cancel an appointment
- As a fitter in the fitting flow...
- [x] Verify we can book a follow-up appointment
### 💛 Staging
- [x] Verify `calendar_integration_identity_mappings` have `customer_salesforce_id` values in their `internal_id` column
- `SELECT * FROM "calendar_integration_identity_mappings" WHERE "calendar_integration_type" = 'TCM' AND "type" = 'CUSTOMER'`
- As an internal fitter...
- [x] Book an appointment
- [x] Verify it is created with proper data in appointment service
- [x] CONFIRMED status
- [x] `created_by` has proper user id and email
- [x] Reschedule an appointment
- [x] Verify it is rescheduled with proper status in appointment service
- [x] Cancel an appointment
- [x] Verify it is canceled with proper status in appointment service
- [x] Verify appointment has been created/rescheduled/canceled in Salesforce
- As a consultant...
- [x] Book an appointment in SF (legacy method)
- [x] Verify it is created with proper data in appointment service
- [x] `created_by` has proper `system`: SALESFORCE
- [x] Cancel an appointment in SF (legacy method)
- [x] Verify it is canceled with proper status in appointment service
- As a TCM fitter...
- [ ] Book an appointment
- [ ] Verify a customer record has been created in `calendar_integration_identity_mappings`
- [ ] Reschedule an appointment (on a different day)
- [ ] Verify NO DUPLICATE customer record has been created in `calendar_integration_identity_mappings`
- [ ] Cancel an appointment
- As a Sycle fitter...
- [ ] Book an appointment
- [ ] Reschedule an appointment
- [ ] Cancel an appointment
- As a fitter in the fitting flow...
- [ ] Verify we can book a follow-up appointment
### ❤️ Production
- [x] Verify `calendar_integration_identity_mappings` have `customer_salesforce_id` values in their `internal_id` column
- `SELECT * FROM "calendar_integration_identity_mappings" WHERE "calendar_integration_type" = 'TCM' AND "type" = 'CUSTOMER'`
- As an internal fitter...
- [x] Book an appointment
- [x] Verify it is created with proper data in appointment service
- [x] CONFIRMED status
- [x] `created_by` has proper user id and email
- [x] Reschedule an appointment
- [x] Verify it is rescheduled with proper status in appointment service
- [x] Cancel an appointment
- [x] Verify it is canceled with proper status in appointment service
- [x] Verify appointment has been created/rescheduled/canceled in Salesforce
- As a consultant...
- [x] Book an appointment in SF (legacy method)
- [x] Verify it is created with proper data in appointment service
- [x] `created_by` has proper `system`: SALESFORCE
- [x] Cancel an appointment in SF (legacy method)
- [x] Verify it is canceled with proper status in appointment service
- As a TCM fitter...
- [ ] Book an appointment
- [ ] Verify a customer record has been created in `calendar_integration_identity_mappings`
- [ ] Reschedule an appointment (on a different day)
- [ ] Verify NO DUPLICATE customer record has been created in `calendar_integration_identity_mappings`
- [ ] Cancel an appointment
- As a Sycle fitter...
- [ ] Book an appointment
- [ ] Reschedule an appointment
- [ ] Cancel an appointment
- As a fitter in the fitting flow...
- [ ] Verify we can book a follow-up appointment
## 🔙 Rollback strategy
- [ ] Run down migration manually against environment
- [ ] Rollback `master` deployment to previous code version
- [ ] [`ta-appointment-service`](https://jenkins.audibene.net/blue/organizations/jenkins/Audibene-GMBH%2Fta-appointment-service/activity?branch=master)
- [ ] Verify `calendar_integration_identity_mappings` have `customer_id` values in their `internal_id` column
- `SELECT * FROM "calendar_integration_identity_mappings" WHERE "calendar_integration_type" = 'TCM' AND "type" = 'CUSTOMER'`
- [ ] [`ta-appointment-ui`](https://jenkins.audibene.net/blue/organizations/jenkins/Audibene-GMBH%2Fta-appointment-ui/activity?branch=master)
- [ ] Verify Scheduling UI comes up with availabilities