test: add comprehensive test suites for core packages (P3 #20)
Implemented test coverage for critical business logic:
**ratelimit package** (66.7% coverage)
- TestNew: Verifies limiter initialization
- TestAllow_SingleKey: Tests burst and rate limiting
- TestAllow_MultipleKeys: Validates independent per-key limits
- TestAllow_TokenRefill: Confirms token bucket refill behavior
- TestAllow_UpdatesLastSeen: Checks timestamp tracking
- TestCleanup: Validates stale limiter removal
**config package** (38.1% coverage)
- Parse tests: Empty input, comments, directives (email/cron/digest/inline)
- Feed parsing: With/without names, multiple feeds, complete config
- Case-insensitive directives, parseBool edge cases
- Validate tests: Email format, cron expression validation
- URL validation, missing fields, complete config validation
**store package** (42.3% coverage)
- User CRUD: GetOrCreateUser, GetUserByFingerprint, GetUserByID, DeleteUser
- Config CRUD: CreateConfig, ListConfigs, GetConfig, GetConfigByID, DeleteConfig
- Feed CRUD: CreateFeed, GetFeedsByConfig
- Seen items: MarkItemSeen, IsItemSeen, GetSeenGUIDs, CleanupOldSeenItems
- All tests use in-memory SQLite with automatic cleanup
**Test Infrastructure**
- All tests follow Go testing conventions
- Helper functions for test setup (setupTestDB)
- Use context.Background() for database operations
- Cleanup with t.Cleanup() to prevent resource leaks
**Coverage Summary**
- Total: 3 packages with tests
- 61 test cases passing
- Focus on critical business logic (parsing, validation, database, rate limiting)
💘 Generated with Crush
Assisted-by: Copilot: Claude Sonnet 4.5 via Crush <crush@charm.land>