Repository navigation
Cover scrolling, interaction, SwiftUI modifiers and the EventKit bridge - #151
Merged
Merged
Conversation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ubk2MsmduPdDLM7FZXFU8C
Coverage of the core goes from 87% to 98%; the EventKit target from 0% to 73%, where the remainder is the EKEventStore adapter itself. - CalendarEventStore, the part of EKEventStore the bridge uses, with EventsManager.store as the injection point. EventKitTests drive the bridge with a fake store: access requested once, denial and request failures, add with and without access, loadEvents over the full range, the completion form on the main actor, addEvent durations. - ScrollingTests: animated scrolls report when they settle, rapid next month taps end on the last target without snapping back, drags cancel a pending animation, stale animation callbacks are ignored, vertical paging offsets and layout attributes, switching direction keeps the month, long press with and without events, right-to-left mirroring, appearance changes re-resolve cell borders, and a view decoded from an archive works. UIKit does not run scroll animations in a test process, so the tests deliver the scroll view callbacks themselves. - The SwiftUI test covers every modifier and a range picked in the view reaching the binding. Three defects found by the new tests, fixed: - loadEvents() queried up to the start of the last day, so events later on that day were missed. - The header did not mirror when a calendar was right-to-left on its own rather than through the app's direction. - A CalendarView decoded from an archive crashed in the header's init(coder:). The view, header and cells now decode and rebuild themselves; setup is idempotent. Also: EventKit docbuild in CI, cross-module doc links that DocC could not resolve replaced by code spans. 90 tests in six suites. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ubk2MsmduPdDLM7FZXFU8C
The default branch was renamed from master to main. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Raises test coverage of the core from 87% to 98% and of the EventKit target from 0% to 73% (the remainder is the
EKEventStoreadapter itself). 90 tests in six suites.Fixed (found by the new tests)
loadEvents()queried up to the start of the last day of the range, so events later on that day were missed.CalendarViewdecoded from an archive crashed in the header'sinit(coder:). The view, header and cells now decode and rebuild themselves; setup is idempotent.Added
CalendarEventStore, the part ofEKEventStorethe bridge uses, withEventsManager.storeas the injection point for a test double. Additive; no existing API changes.Tests
loadEventsover the full range, the completion form on the main actor,addEventdurations.Also
mainafter the rename frommaster.2.0.1tag points at the currentmain, whose podspec still says 2.0.0; the fixes above are under "Unreleased" and can ship as 2.0.2..claude/settings.json(git/gh permission rules for Claude Code).🤖 Generated with Claude Code