implement manual event management and support for multiple speakers per event

This commit is contained in:
Eugene Dubinin 2017-02-02 16:34:59 +02:00
parent 46a6a59622
commit 790e2fd3a2
24 changed files with 180 additions and 89 deletions

View file

@ -10,8 +10,8 @@ describe Api::V1::SpeakersController do
describe 'GET #index' do
before do
event.event_users << create(:speaker, user: speaker)
conference_event.event_users << create(:speaker, user: conference_speaker)
event.speakers = [speaker]
conference_event.speakers = [conference_speaker]
end
context 'without conference scope' do
@ -20,7 +20,6 @@ describe Api::V1::SpeakersController do
get :index, format: :json
json = JSON.parse(response.body)['speakers']
expect(response).to be_success
expect(json.length).to eq(2)
expect(json[0]['name']).to eq('Speaker')
expect(json[1]['name']).to eq('Conf_Speaker')

View file

@ -180,9 +180,8 @@ describe ProposalsController do
get :show, conference_id: conference.short_title, id: event.id
end
it 'assigns event and speaker variables' do
it 'assigns event variable' do
expect(assigns(:event)).to eq event
expect(assigns(:speaker)).to eq event.submitter
end
it 'renders show template' do

View file

@ -8,7 +8,8 @@ FactoryGirl.define do
program
after(:build) do |event|
event.event_users << build(:submitter) unless event.submitter # so that we don't have two submitters
event.submitter = build(:submitter).user unless event.submitter # so that we don't have two submitters
event.speakers << build(:speaker).user unless event.speakers.any?
# set an event_type if none is passed to the factory.
# needs to be created here because otherwise it doesn't belong to the
# same conference as the event

View file

@ -8,8 +8,7 @@ describe Mailbot do
before { conference.contact.update_attributes(email: 'conf@domain.com') }
context 'onboarding and proposal' do
let(:event_user) { create(:submitter, user: user) }
let(:event) { create(:event, program: conference.program, event_users: [event_user]) }
let(:event) { create(:event, program: conference.program, submitter: user) }
shared_examples 'mailer actions' do
it 'assigns the email subject' do

View file

@ -3,8 +3,7 @@ require 'spec_helper'
describe EmailSettings do
let(:conference) { create(:conference, short_title: 'goto', start_date: Date.new(2014, 05, 01), end_date: Date.new(2014, 05, 06)) }
let(:user) { create(:user, username: 'johnd', email: 'john@doe.com', name: 'John Doe') }
let(:event_user) { create(:submitter, user: user) }
let(:event) { create(:event, program: conference.program, title: 'Talk about talks', event_users: [event_user]) }
let(:event) { create(:event, program: conference.program, title: 'Talk about talks', submitter: user) }
let(:expected_hash) do
{
'email' => 'john@doe.com',

View file

@ -236,9 +236,7 @@ describe Event do
describe '#submitter' do
it 'returns the user that submitted the event' do
submitter = create(:user)
submitted_event = create(:event)
submitted_event.event_users = [create(:event_user, user: submitter, event_role: 'submitter')]
submitted_event = create(:event, submitter: submitter)
expect(submitted_event.submitter).to eq submitter
end
end
@ -288,9 +286,10 @@ describe Event do
describe '#speaker_names' do
context 'returns the speakers of the event' do
it 'when submitter is a speaker too' do
speaker1 = create(:user, name: 'user speaker 1')
new_event.event_users = [create(:event_user, user: speaker1, event_role: 'submitter')]
new_event.event_users << [create(:event_user, user: speaker1, event_role: 'speaker')]
submitter = create(:user, name: 'user speaker 1')
new_event.submitter = submitter
new_event.speakers = [submitter]
expect(new_event.speaker_names).to eq 'user speaker 1'
end
@ -299,10 +298,10 @@ describe Event do
submitter = create(:user, name: 'user submitter 1')
speaker1 = create(:user, name: 'user speaker 1')
new_event.event_users = [create(:event_user, user: submitter, event_role: 'submitter')]
new_event.event_users << [create(:event_user, user: speaker1, event_role: 'speaker')]
new_event.submitter = submitter
new_event.speakers = [speaker1]
expect(new_event.speaker_names).to eq 'user submitter 1 and user speaker 1'
expect(new_event.speaker_names).to eq 'user speaker 1'
end
it 'when there are multiple speakers' do
@ -310,11 +309,10 @@ describe Event do
speaker1 = create(:user, name: 'user speaker 1')
speaker2 = create(:user, name: 'user speaker 2')
new_event.event_users = [create(:event_user, user: submitter, event_role: 'submitter')]
new_event.event_users << [create(:event_user, user: speaker1, event_role: 'speaker')]
new_event.event_users << [create(:event_user, user: speaker2, event_role: 'speaker')]
new_event.submitter = submitter
new_event.speakers = [speaker1, speaker2]
expect(new_event.speaker_names).to eq 'user submitter 1, user speaker 1, and user speaker 2'
expect(new_event.speaker_names).to eq 'user speaker 1 and user speaker 2'
end
end
end

View file

@ -3,7 +3,7 @@ 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
context 'event does not have date, room and tracks assigned' do
it 'sets guid, title, length, abstract and type' do
expected_json = {
event: {
@ -13,7 +13,7 @@ describe EventSerializer, type: :serializer do
scheduled_date: '',
language: nil,
abstract: 'Lorem ipsum dolor sit amet',
speaker_ids: [],
speaker_ids: event.speaker_ids,
type: 'Example Event Type',
room: nil,
track: nil
@ -25,13 +25,13 @@ describe EventSerializer, type: :serializer do
end
context 'event has date, speakers, room and tracks assigned' do
let(:speaker) { create(:speaker) }
let(:speaker) { create(:user) }
let(:room) { create(:room) }
let(:track) { create(:track) }
before do
event.language = 'English'
event.event_users << speaker
event.language = 'English'
event.speakers = [speaker]
create(:event_schedule, event: event, room: room, start_time: Date.new(2014, 03, 04))
event.track = track
end
@ -45,7 +45,7 @@ describe EventSerializer, type: :serializer do
scheduled_date: ' 2014-03-04T00:00:00+0000 ',
language: 'English',
abstract: 'Lorem ipsum dolor sit amet',
speaker_ids: [speaker.user.id],
speaker_ids: [speaker.id],
type: 'Example Event Type',
room: room.guid,
track: track.guid