calendar-plugin/tests/lifecycle_test_cases.md

55 lines
1.7 KiB
Markdown

# Plugin Lifecycle Test Cases
## Purpose
Verify activation, deactivation, and removal semantics, including table cleanup behavior controlled from Setup (`uninstall_cleanup_mode`).
## Preconditions
- Run on a disposable/staging WordPress environment.
- Plugin package installed but tests may deactivate/remove plugin.
- Record current value of `calendar_plugin_uninstall_cleanup_mode`.
## LIF-001 First-Time Activation
- Steps:
1. Ensure plugin is not active.
2. Activate plugin.
3. Open Setup page once.
- Assertions:
- Activation succeeds without fatal errors.
- Required plugin tables exist (`*_events`, `*_recurrence_exceptions`, `*_users`, `*_user_tokens`, `*_audit_log`).
- Default setup values exist, including `uninstall_cleanup_mode=keep`.
## LIF-002 Deactivation (No Data Loss)
- Steps:
1. Seed at least one event and one user.
2. Deactivate plugin.
3. Re-activate plugin.
- Assertions:
- Deactivation does not drop plugin tables.
- Seeded data remains available after re-activation.
## LIF-003 Removal With Keep Mode
- Steps:
1. Set Setup -> Uninstall Cleanup = `keep`.
2. Remove/delete plugin from WordPress.
3. Re-install and activate plugin.
- Assertions:
- Plugin-owned tables are preserved.
- Existing plugin data remains.
## LIF-004 Removal With Remove Mode
- Steps:
1. Set Setup -> Uninstall Cleanup = `remove`.
2. Remove/delete plugin from WordPress.
3. Inspect database.
- Assertions:
- Plugin-owned tables are dropped.
- Plugin-owned options are removed.
- No non-plugin tables are affected.
## LIF-005 Idempotence/Safety
- Steps:
1. Run remove flow twice in `remove` mode.
- Assertions:
- No fatal errors on repeated cleanup.
- Cleanup remains scoped to plugin-owned objects only.