From 82edf7870a33cfb7647e6671941cb9fd3e376dea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Geuken?= Date: Fri, 17 Apr 2015 16:20:39 +0200 Subject: [PATCH] event: refactor as_json method and add a test --- app/models/event.rb | 20 +++----------------- spec/models/event_spec.rb | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/app/models/event.rb b/app/models/event.rb index 99d13287..e5c69c54 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -99,23 +99,9 @@ class Event < ActiveRecord::Base def as_json(options) json = super(options) - if room.nil? - json[:room_guid] = nil - else - json[:room_guid] = room.guid - end - - if track.nil? - json[:track_color] = '#ffffff' - else - json[:track_color] = track.color - end - - if event_type.nil? - json[:length] = 25 - else - json[:length] = event_type.length - end + json[:room_guid] = room.try(:guid) + json[:track_color] = track.try(:color) || '#ffffff' + json[:length] = event_type.try(:length) || 25 json end diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb index b777308e..33b59c81 100644 --- a/spec/models/event_spec.rb +++ b/spec/models/event_spec.rb @@ -17,4 +17,27 @@ describe Event do expect(event.abstract_word_count).to eq(0) end end + + describe 'as_json' do + let(:event) { create(:event) } + + it 'adds the event\'s room_guid, track_color and length' do + event.room = create(:room) + event.track = create(:track, color: '#efefef') + json_hash = event.as_json(nil) + + expect(json_hash[:room_guid]).to eq(event.room.guid) + expect(json_hash[:track_color]).to eq('#efefef') + expect(json_hash[:length]).to eq(30) + end + + it 'uses correct default values for room_guid, track_color and length' do + event.event_type = nil + json_hash = event.as_json(nil) + + expect(json_hash[:room_guid]).to be_nil + expect(json_hash[:track_color]).to eq('#ffffff') + expect(json_hash[:length]).to eq(25) + end + end end