summaryrefslogtreecommitdiff
path: root/tests/test-calendar-sync.el
AgeCommit message (Collapse)Author
2025-11-16test(calendar-sync): Add unit tests for UTC conversion functionCraig Jennings
Added 5 dedicated unit tests for calendar-sync--convert-utc-to-local function that was extracted during refactoring: - test-calendar-sync--convert-utc-to-local-basic-conversion Tests standard UTC to local time conversion - test-calendar-sync--convert-utc-to-local-midnight-boundary Tests day boundary handling (UTC midnight → previous day in some timezones) - test-calendar-sync--convert-utc-to-local-preserves-minutes Verifies minute component preservation during conversion - test-calendar-sync--convert-utc-to-local-returns-five-elements Validates return format and element types - test-calendar-sync--convert-utc-to-local-end-of-day Tests near end-of-day conversion (potential rollover to next day) Test coverage increased from 51 to 56 tests, all passing. The extracted function now has both direct unit tests (isolation) and indirect integration tests (via calendar-sync--parse-timestamp). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-16feat(calendar-sync): Add automatic timezone detection and chronological sortingCraig Jennings
Implemented calendar-sync.el as a complete replacement for org-gcal, featuring: **Core Functionality:** - One-way sync from Google Calendar to Org (via .ics URL) - UTC to local timezone conversion for all event timestamps - Chronological event sorting (past → present → future) - Non-blocking sync using curl (works reliably in daemon mode) **Automatic Timezone Detection:** - Detects timezone changes when traveling between timezones - Tracks timezone offset in seconds (-21600 for CST, -28800 for PST, etc.) - Triggers automatic re-sync when timezone changes detected - Shows informative messages: "Timezone change detected (UTC-6 → UTC-8)" **State Persistence:** - Saves sync state to ~/.emacs.d/data/calendar-sync-state.el - Persists timezone and last sync time across Emacs sessions - Enables detection even after closing Emacs before traveling **User Features:** - Interactive commands: calendar-sync-now, calendar-sync-start/stop - Keybindings: C-; g s (sync), C-; g a (start auto-sync), C-; g x (stop) - Optional auto-sync every 15 minutes (disabled by default) - Clear status messages for all operations **Code Quality:** - Comprehensive test coverage: 51 ERT tests (100% passing) - Refactored UTC conversion into separate function - Clean separation of concerns (parsing, conversion, formatting, sorting) - Well-documented with timezone behavior guide and changelog **Migration:** - Removed org-gcal-config.el (archived in modules/archived/) - Updated init.el to use calendar-sync - Moved gcal.org to .emacs.d/data/ for machine-independent syncing - Removed org-gcal appointment capture template Files modified: modules/calendar-sync.el:442, tests/test-calendar-sync.el:577 Files created: data/calendar-sync-state.el, tests/testutil-calendar-sync.el Documentation: docs/calendar-sync-timezones.md, docs/calendar-sync-changelog.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>