diff --git a/app/services/full_calendar_formatter.rb b/app/services/full_calendar_formatter.rb index 94e0b09d..208eba2e 100644 --- a/app/services/full_calendar_formatter.rb +++ b/app/services/full_calendar_formatter.rb @@ -3,14 +3,28 @@ class FullCalendarFormatter rooms.map { |room| room_to_resource(room) }.to_json end - def self.event_schedules_to_resources(event_schedules); end + def self.event_schedules_to_resources(event_schedules) + event_schedules.map { |event_schedule| event_schedule_to_resource(event_schedule) }.to_json + end - private_class_method + class << self + private - def self.room_to_resource(room) - { - id: room.guid, - title: room.name - } + def room_to_resource(room) + { + id: room.guid, + title: room.name + } + end + + def event_schedule_to_resource(event_schedule) + { + id: event_schedule.event.guid, + title: event_schedule.event.title, + start: event_schedule.start_time, + end: event_schedule.end_time, + source: event_schedule.room.guid + } + end end end diff --git a/spec/services/full_calendar_formatter_spec.rb b/spec/services/full_calendar_formatter_spec.rb index 2c931b90..5ef763b1 100644 --- a/spec/services/full_calendar_formatter_spec.rb +++ b/spec/services/full_calendar_formatter_spec.rb @@ -5,10 +5,13 @@ require 'spec_helper' describe FullCalendarFormatter do let!(:room1) { create(:room) } let!(:room2) { create(:room) } + let!(:rooms) { [room1, room2] } + let!(:event_schedule1) { create(:event_schedule, room: room1) } + let!(:event_schedule2) { create(:event_schedule, room: room2) } + let!(:event_schedules) { [event_schedule1, event_schedule2] } describe 'JSON formatting for FullCalendar' do it 'translates rooms to resources' do - rooms = [room1, room2] resources = described_class.rooms_to_resources(rooms) expected_json = [ { @@ -22,5 +25,26 @@ describe FullCalendarFormatter do ].to_json expect(resources).to eq(expected_json) end + + it 'translates event schedules to resources' do + resources = described_class.event_schedules_to_resources(event_schedules) + expected_json = [ + { + id: event_schedule1.event.guid, + title: event_schedule1.event.title, + start: event_schedule1.start_time, + end: event_schedule1.end_time, + source: room1.guid + }, + { + id: event_schedule2.event.guid, + title: event_schedule2.event.title, + start: event_schedule2.start_time, + end: event_schedule2.end_time, + source: room2.guid + } + ].to_json + expect(resources).to eq(expected_json) + end end end