Tests for the new associations and models

Tests for the schedule versioning new associations and models
This commit is contained in:
Ana 2016-07-08 13:27:42 +02:00
parent c047ffd699
commit e7a30302ff
9 changed files with 66 additions and 17 deletions

View file

@ -0,0 +1,22 @@
# Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do
factory :event_schedule do
event
after(:build) do |event_schedule|
program = event_schedule.event.program
unless (venue = program.conference.venue)
venue = create(:venue, conference: program.conference)
end
(event_schedule.room = create(:room, venue: venue)) unless event_schedule.room.present?
(event_schedule.start_time = program.conference.start_date.to_time) unless event_schedule.start_time.present?
unless program.selected_schedule.present?
schedule = create(:schedule, program: program)
program.schedules << schedule
program.selected_schedule = schedule.id
program.save!
end
event_schedule.schedule_id = program.selected_schedule
end
end
end

View file

@ -18,22 +18,20 @@ FactoryGirl.define do
factory :event_full do
difficulty_level
track
room
after(:build) do |event|
event.commercials << build(:event_commercial, commercialable: event)
event.difficulty_level = build(:difficulty_level, program: event.program)
event.track = build(:track, program: event.program)
unless (venue = event.program.conference.venue)
venue = create(:venue, conference: event.program.conference)
unless event.program.conference.venue
create(:venue, conference: event.program.conference)
end
event.room = build(:room, venue: venue)
event.comment_threads << build(:comment, commentable: event)
end
factory :event_scheduled do
after(:build) do |event|
event.state = 'confirmed'
event.start_time = event.program.conference.start_date.to_time
event.event_schedules << build(:event_schedule, event: event)
end
end
end

View file

@ -0,0 +1,7 @@
# Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do
factory :schedule do
program
end
end

View file

@ -0,0 +1,10 @@
require 'spec_helper'
describe EventSchedule do
describe 'association' do
it { should belong_to(:schedule) }
it { should belong_to(:event) }
it { should belong_to(:room) }
end
end

View file

@ -27,7 +27,10 @@ describe Event do
describe 'max_attendees_no_more_than_room_size' do
before :each do
event.room = create(:room, size: 3)
unless (venue = event.program.conference.venue)
venue = create(:venue, conference: event.program.conference)
end
create(:event_schedule, event: event, room: create(:room, venue: venue, size: 3))
event.require_registration = true
end
@ -116,8 +119,7 @@ describe Event do
describe '#scheduled?' do
it { expect(event.scheduled?).to eq false }
it 'returns true if the event is scheduled' do
event.room = create(:room)
event.start_time = conference.start_date.to_time
create(:event_schedule, event: event)
expect(event.scheduled?).to eq true
end
end
@ -259,11 +261,11 @@ describe Event do
describe '#as_json' do
it 'adds the event\'s room_guid, track_color and length' do
event.room = create(:room)
create(:event_schedule, event: event)
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[:room_guid]).to eq(event.scheduled_room.guid)
expect(json_hash[:track_color]).to eq('#EFEFEF')
expect(json_hash[:length]).to eq(30)
end

View file

@ -8,6 +8,7 @@ describe Program do
describe 'association' do
it { is_expected.to belong_to :conference }
it { is_expected.to have_one(:cfp).dependent(:destroy) }
it { is_expected.to have_many(:schedules).dependent(:destroy) }
it { is_expected.to have_many(:event_types).dependent(:destroy) }
it { is_expected.to have_many(:tracks).dependent(:destroy) }
it { is_expected.to have_many(:difficulty_levels).dependent(:destroy) }

View file

@ -11,7 +11,7 @@ describe Room do
describe 'association' do
it { should belong_to(:venue) }
it { should have_many(:events).dependent(:nullify) }
it { should have_many(:event_schedules).dependent(:nullify) }
end
describe 'callback' do

View file

@ -0,0 +1,9 @@
require 'spec_helper'
describe Schedule do
describe 'association' do
it { should belong_to(:program) }
it { should have_many(:event_schedules).dependent(:destroy) }
end
end

View file

@ -10,12 +10,12 @@ describe EventSerializer, type: :serializer do
guid: event.guid,
title: 'Some Talk',
length: 30,
date: '',
scheduled_date: '',
language: nil,
abstract: '<p>Lorem ipsum dolor sit amet</p>',
speaker_ids: [],
type: 'Example Event Type',
room: nil,
scheduled_room: nil,
track: nil
}
}.to_json
@ -30,9 +30,9 @@ describe EventSerializer, type: :serializer do
let(:track) { create(:track) }
before do
event.update_attributes(start_time: Date.new(2014, 03, 04), language: 'English')
event.language = 'English'
event.event_users << speaker
event.room = room
create(:event_schedule, event: event, room: room, start_time: Date.new(2014, 03, 04))
event.track = track
end
@ -42,12 +42,12 @@ describe EventSerializer, type: :serializer do
guid: event.guid,
title: 'Some Talk',
length: 30,
date: ' 2014-03-04T00:00:00+0000 ',
scheduled_date: ' 2014-03-04T00:00:00+0000 ',
language: 'English',
abstract: '<p>Lorem ipsum dolor sit amet</p>',
speaker_ids: [speaker.user.id],
type: 'Example Event Type',
room: room.guid,
scheduled_room: room.guid,
track: track.guid
}
}.to_json