From 0aa36b470e38315d2028c5dd73305e0474705758 Mon Sep 17 00:00:00 2001 From: Aditya Prakash Date: Sun, 3 Apr 2016 00:40:13 +0530 Subject: [PATCH] Add Eventserializer tests and fix undefined method `l' for Eventserializer Solution of no method error pointed by @nishanthvijayan: http://stackoverflow.com/a/11724935 --- app/serializers/event_serializer.rb | 2 +- spec/serializers/event_serializer_spec.rb | 58 +++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 spec/serializers/event_serializer_spec.rb diff --git a/app/serializers/event_serializer.rb b/app/serializers/event_serializer.rb index f11d6fe3..e64a5840 100644 --- a/app/serializers/event_serializer.rb +++ b/app/serializers/event_serializer.rb @@ -5,7 +5,7 @@ class EventSerializer < ActiveModel::Serializer def date t = object.start_time - t.blank? ? '' : %{ #{l t, format: :short}#{t.formatted_offset(false)} } + t.blank? ? '' : %{ #{I18n.l t, format: :short}#{t.formatted_offset(false)} } end def speaker_ids diff --git a/spec/serializers/event_serializer_spec.rb b/spec/serializers/event_serializer_spec.rb new file mode 100644 index 00000000..c7b1c38f --- /dev/null +++ b/spec/serializers/event_serializer_spec.rb @@ -0,0 +1,58 @@ +require 'spec_helper' +describe EventSerializer, type: :serializer do + let(:event) { create(:event, title: 'Some Talk', abstract: 'Lorem ipsum dolor sit amet') } + let(:serializer) { EventSerializer.new(event) } + + context 'event does not have date, speakers, room and tracks assigned' do + it 'sets guid, title, length, abstract and type' do + expected_json = { + event: { + guid: event.guid, + title: 'Some Talk', + length: 30, + date: '', + language: nil, + abstract: '

Lorem ipsum dolor sit amet

', + speaker_ids: [], + type: 'Example Event Type', + room: nil, + track: nil + } + }.to_json + + expect(serializer.to_json).to eq expected_json + end + end + + context 'event has date, speakers, room and tracks assigned' do + let(:speaker) { create(:speaker) } + let(:room) { create(:room) } + let(:track) { create(:track) } + + before do + event.update_attributes(start_time: Date.new(2014, 03, 04), language: 'English') + event.event_users << speaker + event.room = room + event.track = track + end + + it 'sets guid, title, length, abstract, type, date, language, speakers, room and track' do + expected_json = { + event: { + guid: event.guid, + title: 'Some Talk', + length: 30, + date: ' 2014-03-04T00:00:00+0000 ', + language: 'English', + abstract: '

Lorem ipsum dolor sit amet

', + speaker_ids: [speaker.user.id], + type: 'Example Event Type', + room: room.guid, + track: track.guid + } + }.to_json + + expect(serializer.to_json).to eq expected_json + end + end +end