diff --git a/app/controllers/schedules_controller.rb b/app/controllers/schedules_controller.rb index 1671fb8f..f23dbec9 100644 --- a/app/controllers/schedules_controller.rb +++ b/app/controllers/schedules_controller.rb @@ -80,34 +80,35 @@ class SchedulesController < ApplicationController end def vertical_schedule - @event_schedules = @program.selected_event_schedules( - includes: [{ event: %i[event_id title speaker] }] - ) + @event_schedules = @program.selected_event_schedules( + includes: [{ event: %i[event_id title speaker] }] + ) - respond_to do |format| - format.xml do - @events_xml = event_schedules.map(&:event).group_by{ |event| event.time.to_date } if event_schedules - end - - format.ics do - cal = Icalendar::Calendar.new - cal = icalendar_proposals(cal, event_schedules.map(&:event), @conference) - cal.publish - render inline: cal.to_ical - end - - format.html do - @rooms = @conference.venue.rooms if @conference.venue - @dates = @conference.start_date..@conference.end_date - - # Ids of the @event_schedules of confrmed self_organized tracks along with the selected_schedule_id - @selected_schedules_ids = [@conference.program.selected_schedule_id] - @conference.program.tracks.self_organized.confirmed.each do |track| - @selected_schedules_ids << track.selected_schedule_id - end - @selected_schedules_ids.compact! - @event_schedules_by_room_id = event_schedules.select { |s| @selected_schedules_ids.include?(s.schedule_id) }.group_by(&:room_id) + respond_to do |format| + format.xml do + @events_xml = event_schedules.map(&:event).group_by{ |event| event.time.to_date } if event_schedules + end + + format.ics do + cal = Icalendar::Calendar.new + cal = icalendar_proposals(cal, event_schedules.map(&:event), @conference) + cal.publish + render inline: cal.to_ical + end + + format.html do + @rooms = @conference.venue.rooms if @conference.venue + @dates = @conference.start_date..@conference.end_date + + # Ids of the @event_schedules of confrmed self_organized tracks along with the selected_schedule_id + @selected_schedules_ids = [@conference.program.selected_schedule_id] + @conference.program.tracks.self_organized.confirmed.each do |track| + @selected_schedules_ids << track.selected_schedule_id end + @selected_schedules_ids.compact! + @event_schedules_by_room_id = event_schedules.select { |s| @selected_schedules_ids.include?(s.schedule_id) }.group_by(&:room_id) + end + end end def app diff --git a/app/services/full_calendar_formatter.rb b/app/services/full_calendar_formatter.rb index 91cd3b25..94e0b09d 100644 --- a/app/services/full_calendar_formatter.rb +++ b/app/services/full_calendar_formatter.rb @@ -1,3 +1,16 @@ class FullCalendarFormatter - def rooms_to_resources(rooms); end + def self.rooms_to_resources(rooms) + rooms.map { |room| room_to_resource(room) }.to_json + end + + def self.event_schedules_to_resources(event_schedules); end + + private_class_method + + def self.room_to_resource(room) + { + id: room.guid, + title: room.name + } + end end diff --git a/spec/features/conference_schedule_spec.rb b/spec/features/conference_schedule_spec.rb index fae6fbeb..2fc6b03e 100644 --- a/spec/features/conference_schedule_spec.rb +++ b/spec/features/conference_schedule_spec.rb @@ -9,6 +9,10 @@ feature Schedule do before(:each) do visit vertical_schedule_conference_schedule_path end + + it 'returns a successful response' do + expect(response.status).to eq(200) + end end end end diff --git a/spec/services/full_calendar_formatter_spec.rb b/spec/services/full_calendar_formatter_spec.rb index 2cf607e9..2c931b90 100644 --- a/spec/services/full_calendar_formatter_spec.rb +++ b/spec/services/full_calendar_formatter_spec.rb @@ -3,12 +3,24 @@ require 'spec_helper' describe FullCalendarFormatter do - let!(:room0) { create(:room) } let!(:room1) { create(:room) } + let!(:room2) { create(:room) } describe 'JSON formatting for FullCalendar' do it 'translates rooms to resources' do - room_list = [room1, room2] # TODO + rooms = [room1, room2] + resources = described_class.rooms_to_resources(rooms) + expected_json = [ + { + id: room1.guid, + title: room1.name + }, + { + id: room2.guid, + title: room2.name + } + ].to_json + expect(resources).to eq(expected_json) end end end