3.2 KiB
3.2 KiB
Local Database Requirements (Testing)
Purpose
Define local database requirements for reliable, repeatable testing of the calendar plugin.
Scope
This document applies to local development and automated test execution using the local compatibility harness.
It covers:
- Local test database setup
- Schema creation and migration behavior
- Test data seeding and isolation
- Reset/cleanup requirements between test runs
Environment Assumptions
- Database runs locally or in a local containerized service.
- Test database is separate from production/staging databases.
- All plugin date/time values are treated as
Europe/Londonunless a test explicitly validates timezone conversion behavior.
Database Access Requirements
- Tests must connect using non-production credentials.
- Credentials are provided via local environment configuration (e.g.,
credentials/.env) and must not be hardcoded in source. - Test runner/harness must fail fast with clear errors if DB connectivity is unavailable.
Schema Requirements
- Plugin schema must be created using WordPress APIs used in runtime lifecycle (
$wpdb,dbDelta()), not ad-hoc raw SQL scripts as the primary path. - Schema initialization for tests must be idempotent.
- Schema versioning must be testable (fresh install and upgrade path).
Required Data Coverage
Seed test data must include:
- Single non-recurring event
- All-day event
- Daily recurrence
- Weekly recurrence
- Monthly recurrence
- Yearly recurrence
- Custom recurrence with:
- No end date
- Count-limited (
create <n> appointments) - Date-limited (
repeat until <date>)
- Edge cases:
- Month-end boundaries
- Leap-year behavior
- DST boundary behavior for
Europe/London
Isolation and Determinism
- Each test run must be deterministic.
- Test cases must not depend on leftover data from previous runs.
- Harness must provide one of:
- Full DB reset before suite/test group, or
- Transactional rollback strategy.
Reset and Cleanup Requirements
- A documented command/process must reset local test DB to a known baseline.
- Cleanup must remove plugin test data and temporary artifacts.
- Cleanup must not affect non-test databases.
Performance Expectations
- Local test database setup + seed should complete fast enough for iterative development.
- Query performance should be sufficient for day/week/month/year view tests without timeouts under expected local data volumes.
Security Requirements
- No real production data may be used in local tests.
- Sensitive values (passwords, hostnames) must be stored outside committed requirement docs and source.
- Example values in docs must be clearly dummy placeholders.
Validation Requirements
Test workflow must validate:
- Successful schema creation from clean state
- Successful migration from older schema version(s)
- CRUD correctness
- Recurrence expansion correctness
- Correct behavior of uninstall keep/remove data options
- ICS field mapping readiness based on stored data
Documentation Requirements
Project docs must describe:
- Local DB engine/version prerequisites
- Connection settings required for compatibility harness
- Commands for setup, seed, reset, and teardown
- Troubleshooting steps for common DB issues in local testing