Both iCalendar routes were unusable:
* `/conferences/.../schedule.ics` raised
`NoMethodError: undefined method 'icalendar_proposals'` because the
`ConferenceHelper#icalendar_proposals` helper isn't auto-included in
controllers; the action crashed before rendering.
* `/calendar.ics` silently redirected to `/`. The controller goes
through `load_and_authorize_resource`, which authorises `:calendar`
on `Conference` and is rejected for anonymous visitors because no
ability grants it — CanCan's `AccessDenied` rescue redirects to
root.
The helper is invoked through the controller `helpers` proxy so it
works in both contexts, and the calendar action is opted out of
resource loading and explicitly marked as not requiring authorization
since it serves a public feed across conferences. The helper is also
hardened so that proposals missing a room, difficulty level, track,
event type or scheduled time produce a valid event instead of
crashing the whole feed.
Rails 5.2 warns:
> The `success?` predicate is deprecated and will be removed in Rails 6.0.
> Please use `successful?` as provided by Rack::Response::Helpers.
RSpec correspondingly provides `be_successful`.
Raisl 5.1 removes support for non-keyword arguments in `#process`,
`#get`, `#post`, `#patch`, `#put`, `#delete`, and `#head` for the
`ActionDispatch::IntegrationTest` and `ActionController::TestCase`
classes. This means we have to add `params` everywhere in the controller
tests.
- Drop selected_event_schedule function
- Rename scheduled_room and scheduled_start_time to room and time as if there is no selected_schedule, the event is not scheduled.