Phase 10: Testing Strategy
Document Type: Technical Specification
Phase: 10 - Real-Time Subscriptions
Status: Active
Test Categories
Unit Tests
| Component | Coverage Target |
| event.rs | 100% |
| event_log.rs | 95% |
| subscription.rs | 90% |
| dispatcher.rs | 85% |
| broadcast.rs | 90% |
| presence.rs | 90% |
Integration Tests
| Scenario | Dependencies |
| End-to-end event flow | Event Log, Dispatcher |
| Subscription filtering | Subscription, RLS |
| Broadcast channels | Broadcast, WebSocket |
| Presence sync | Presence, WebSocket |
Critical Test Scenarios
Event Log
- WAL entry produces correct event type
- Sequence numbers are gapless
- Same WAL replayed = same events
Subscriptions
- Subscribe receives confirmation
- Matching events delivered
- Non-matching events filtered
- RLS prevents unauthorized access
Dispatcher
- Events fan-out to all subscribers
- Unsubscribed clients don't receive
- Disconnected clients cleaned up
Broadcast
- Messages delivered to channel
- Non-subscribers don't receive
- Rate limiting enforced
Presence
- Track adds user to presence
- Untrack removes user
- Timeout removes user after 60s
Determinism Tests
RT-E1 Test
#[test]
fn same_wal_same_events() {
let wal = create_test_wal();
let events1 = EventLog::replay(&wal);
let events2 = EventLog::replay(&wal);
assert_eq!(events1, events2);
}
Coverage Requirements
| Component | Minimum |
| Event Log | 95% |
| Subscription | 90% |
| Overall | 85% |