diff --git a/app/serializers/event_schedule_serializer.rb b/app/serializers/event_schedule_serializer.rb index 71a2ea59..44ecdbb9 100644 --- a/app/serializers/event_schedule_serializer.rb +++ b/app/serializers/event_schedule_serializer.rb @@ -6,8 +6,7 @@ class EventScheduleSerializer < ActiveModel::Serializer attributes :date, :room def date - t = object.start_time - t.blank? ? '' : %( #{I18n.l t, format: :short}#{t.formatted_offset(false)} ) + object.start_time&.change(zone: object.event.program.conference.timezone) end def room diff --git a/app/serializers/event_serializer.rb b/app/serializers/event_serializer.rb index a21aa57f..0f5b136f 100644 --- a/app/serializers/event_serializer.rb +++ b/app/serializers/event_serializer.rb @@ -11,8 +11,7 @@ class EventSerializer < ActiveModel::Serializer end def scheduled_date - t = object.time - t.blank? ? '' : %( #{I18n.l t, format: :short}#{t.formatted_offset(false)} ) + object.time&.change(zone: object.program.conference.timezone) end def speaker_ids diff --git a/spec/serializers/event_schedule_serializer_spec.rb b/spec/serializers/event_schedule_serializer_spec.rb new file mode 100644 index 00000000..9d4cc64e --- /dev/null +++ b/spec/serializers/event_schedule_serializer_spec.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe EventScheduleSerializer, type: :serializer do + let(:start) { DateTime.new(2000, 1, 2, 3, 4, 5) } + let(:timezone) { 'Etc/GMT+11' } + let(:conference) do + create(:conference, start_date: start.to_date, + start_hour: start.hour, + timezone: timezone) + end + let(:program) { create(:program, conference: conference) } + let(:event) { create(:event, program: program) } + let(:event_schedule) { create(:event_schedule, event: event, start_time: start) } + let(:serializer) { described_class.new(event_schedule) } + + it 'sets date and room' do + expected_json = { + date: '2000-01-02T03:04:05.000-11:00', + room: event_schedule.room.guid + }.to_json + + expect(serializer.to_json).to eq expected_json + end +end diff --git a/spec/serializers/event_serializer_spec.rb b/spec/serializers/event_serializer_spec.rb index b585e637..37ee4e78 100644 --- a/spec/serializers/event_serializer_spec.rb +++ b/spec/serializers/event_serializer_spec.rb @@ -2,7 +2,13 @@ require 'spec_helper' describe EventSerializer, type: :serializer do - let(:event) { create(:event, title: 'Some Talk', abstract: 'Lorem ipsum dolor sit amet') } + let(:conference) { create(:conference, timezone: 'UTC') } + let(:program) { create(:program, conference: conference) } + let(:event) do + create(:event, program: program, + title: 'Some Talk', + abstract: 'Lorem ipsum dolor sit amet') + end let(:serializer) { EventSerializer.new(event) } context 'event does not have date, room and tracks assigned' do @@ -12,7 +18,7 @@ describe EventSerializer, type: :serializer do url: "http://localhost:3000/conferences/#{event.conference.short_title}/program/proposals/#{event.id}", title: 'Some Talk', length: 30, - scheduled_date: '', + scheduled_date: nil, language: nil, abstract: 'Lorem ipsum dolor sit amet', speaker_ids: event.speaker_ids, @@ -43,7 +49,7 @@ describe EventSerializer, type: :serializer do url: "http://localhost:3000/conferences/#{event.conference.short_title}/program/proposals/#{event.id}", title: 'Some Talk', length: 30, - scheduled_date: ' 2014-03-04T09:00:00+0000 ', + scheduled_date: '2014-03-04T09:00:00.000Z', language: 'English', abstract: 'Lorem ipsum dolor sit amet', speaker_ids: [speaker.id],