Add conference serializer tests and remove unused functions

This commit is contained in:
Aditya Prakash
2016-04-03 11:20:46 +05:30
parent ca4ca21fdf
commit d752cfdf7e
2 changed files with 96 additions and 17 deletions

View File

@@ -7,7 +7,7 @@ class ConferenceSerializer < ActiveModel::Serializer
object.program.difficulty_levels.map do |difficulty_level| { id: difficulty_level.id,
title: difficulty_level.title,
description: difficulty_level.description
}
}
end
end
@@ -16,7 +16,7 @@ class ConferenceSerializer < ActiveModel::Serializer
title: event_type.title,
length: event_type.length,
description: event_type.description
}
}
end
end
@@ -36,9 +36,9 @@ class ConferenceSerializer < ActiveModel::Serializer
difficulty_level_id: event.difficulty_level_id,
track_id: event.track_id,
speaker_names: event.speaker_names
}
}
end
}
}
end
else
[]
@@ -49,22 +49,10 @@ class ConferenceSerializer < ActiveModel::Serializer
object.program.tracks.map do |track| { 'id' => track.id,
'name' => track.name,
'description' => track.description
}
}
end
end
def name
object.title
end
def year
object.start_date.try(:year)
end
def socialtag
object.contact.social_tag
end
def revision
object.revision || 0
end

View File

@@ -0,0 +1,91 @@
require 'spec_helper'
describe ConferenceSerializer, type: :serializer do
let(:conference) do
create(:conference, short_title: 'goto',
description: 'Lorem ipsum dolor sit',
start_date: Date.new(2014, 03, 04),
end_date: Date.new(2014, 03, 10))
end
let(:serializer) { ConferenceSerializer.new(conference) }
let(:expected_hash) do
{
conference: {
short_title: 'goto',
title: 'The dog and pony show',
description: 'Lorem ipsum dolor sit',
start_date: '2014-03-04',
end_date: '2014-03-10',
logo: '/logos/original/missing.png',
difficulty_levels:
[{id: 1,
title: 'Easy',
description: 'Events are understandable for everyone without knowledge of the topic.'
},
{id: 2,
title: 'Medium',
description: 'Events require a basic understanding of the topic.'
},
{id: 3,
title: 'Hard',
description: 'Events require expert knowledge of the topic.'
}
],
event_types:
[{id: 1,
title: 'Talk',
length: 30,
description: 'Presentation in lecture format'
},
{id: 2,
title: 'Workshop',
length: 60,
description: 'Interactive hands-on practice'
}
],
rooms: [],
tracks: [],
date_range: 'March 04 - 10',
revision: 1
}
}
end
context 'conference does not have rooms and tracks' do
it 'sets conference attributes with empty room and tracks' do
expect(serializer.to_json).to eq expected_hash.to_json
end
end
context 'conference has rooms and tracks' do
before do
venue = create(:venue, conference: conference)
_room = create(:room, venue: venue)
_track = create(:track, program: conference.program)
room_hash = {
rooms: [{
id: 1,
size: 4,
events: []
}
]
}
track_hash = {
tracks: [{
id: 1,
name: 'Example Track',
description: 'Lorem Ipsum dolsum'
}
]
}
expected_hash[:conference].merge! room_hash
expected_hash[:conference].merge! track_hash
end
it 'sets conference attributes with rooms and tracks' do
expect(serializer.to_json).to eq expected_hash.to_json
end
end
end