Tests for the new associations and models
Tests for the schedule versioning new associations and models
This commit is contained in:
parent
c047ffd699
commit
e7a30302ff
9 changed files with 66 additions and 17 deletions
22
spec/factories/event_schedule.rb
Normal file
22
spec/factories/event_schedule.rb
Normal 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
|
||||||
|
|
@ -18,22 +18,20 @@ FactoryGirl.define do
|
||||||
factory :event_full do
|
factory :event_full do
|
||||||
difficulty_level
|
difficulty_level
|
||||||
track
|
track
|
||||||
room
|
|
||||||
after(:build) do |event|
|
after(:build) do |event|
|
||||||
event.commercials << build(:event_commercial, commercialable: event)
|
event.commercials << build(:event_commercial, commercialable: event)
|
||||||
event.difficulty_level = build(:difficulty_level, program: event.program)
|
event.difficulty_level = build(:difficulty_level, program: event.program)
|
||||||
event.track = build(:track, program: event.program)
|
event.track = build(:track, program: event.program)
|
||||||
unless (venue = event.program.conference.venue)
|
unless event.program.conference.venue
|
||||||
venue = create(:venue, conference: event.program.conference)
|
create(:venue, conference: event.program.conference)
|
||||||
end
|
end
|
||||||
event.room = build(:room, venue: venue)
|
|
||||||
event.comment_threads << build(:comment, commentable: event)
|
event.comment_threads << build(:comment, commentable: event)
|
||||||
end
|
end
|
||||||
|
|
||||||
factory :event_scheduled do
|
factory :event_scheduled do
|
||||||
after(:build) do |event|
|
after(:build) do |event|
|
||||||
event.state = 'confirmed'
|
event.state = 'confirmed'
|
||||||
event.start_time = event.program.conference.start_date.to_time
|
event.event_schedules << build(:event_schedule, event: event)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
7
spec/factories/schedule.rb
Normal file
7
spec/factories/schedule.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Read about factories at https://github.com/thoughtbot/factory_girl
|
||||||
|
|
||||||
|
FactoryGirl.define do
|
||||||
|
factory :schedule do
|
||||||
|
program
|
||||||
|
end
|
||||||
|
end
|
||||||
10
spec/models/event_schedule_spec.rb
Normal file
10
spec/models/event_schedule_spec.rb
Normal 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
|
||||||
|
|
@ -27,7 +27,10 @@ describe Event do
|
||||||
|
|
||||||
describe 'max_attendees_no_more_than_room_size' do
|
describe 'max_attendees_no_more_than_room_size' do
|
||||||
before :each 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
|
event.require_registration = true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -116,8 +119,7 @@ describe Event do
|
||||||
describe '#scheduled?' do
|
describe '#scheduled?' do
|
||||||
it { expect(event.scheduled?).to eq false }
|
it { expect(event.scheduled?).to eq false }
|
||||||
it 'returns true if the event is scheduled' do
|
it 'returns true if the event is scheduled' do
|
||||||
event.room = create(:room)
|
create(:event_schedule, event: event)
|
||||||
event.start_time = conference.start_date.to_time
|
|
||||||
expect(event.scheduled?).to eq true
|
expect(event.scheduled?).to eq true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -259,11 +261,11 @@ describe Event do
|
||||||
|
|
||||||
describe '#as_json' do
|
describe '#as_json' do
|
||||||
it 'adds the event\'s room_guid, track_color and length' 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')
|
event.track = create(:track, color: '#efefef')
|
||||||
json_hash = event.as_json(nil)
|
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[:track_color]).to eq('#EFEFEF')
|
||||||
expect(json_hash[:length]).to eq(30)
|
expect(json_hash[:length]).to eq(30)
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ describe Program do
|
||||||
describe 'association' do
|
describe 'association' do
|
||||||
it { is_expected.to belong_to :conference }
|
it { is_expected.to belong_to :conference }
|
||||||
it { is_expected.to have_one(:cfp).dependent(:destroy) }
|
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(:event_types).dependent(:destroy) }
|
||||||
it { is_expected.to have_many(:tracks).dependent(:destroy) }
|
it { is_expected.to have_many(:tracks).dependent(:destroy) }
|
||||||
it { is_expected.to have_many(:difficulty_levels).dependent(:destroy) }
|
it { is_expected.to have_many(:difficulty_levels).dependent(:destroy) }
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ describe Room do
|
||||||
|
|
||||||
describe 'association' do
|
describe 'association' do
|
||||||
it { should belong_to(:venue) }
|
it { should belong_to(:venue) }
|
||||||
it { should have_many(:events).dependent(:nullify) }
|
it { should have_many(:event_schedules).dependent(:nullify) }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'callback' do
|
describe 'callback' do
|
||||||
|
|
|
||||||
9
spec/models/schedule_spec.rb
Normal file
9
spec/models/schedule_spec.rb
Normal 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
|
||||||
|
|
@ -10,12 +10,12 @@ describe EventSerializer, type: :serializer do
|
||||||
guid: event.guid,
|
guid: event.guid,
|
||||||
title: 'Some Talk',
|
title: 'Some Talk',
|
||||||
length: 30,
|
length: 30,
|
||||||
date: '',
|
scheduled_date: '',
|
||||||
language: nil,
|
language: nil,
|
||||||
abstract: '<p>Lorem ipsum dolor sit amet</p>',
|
abstract: '<p>Lorem ipsum dolor sit amet</p>',
|
||||||
speaker_ids: [],
|
speaker_ids: [],
|
||||||
type: 'Example Event Type',
|
type: 'Example Event Type',
|
||||||
room: nil,
|
scheduled_room: nil,
|
||||||
track: nil
|
track: nil
|
||||||
}
|
}
|
||||||
}.to_json
|
}.to_json
|
||||||
|
|
@ -30,9 +30,9 @@ describe EventSerializer, type: :serializer do
|
||||||
let(:track) { create(:track) }
|
let(:track) { create(:track) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
event.update_attributes(start_time: Date.new(2014, 03, 04), language: 'English')
|
event.language = 'English'
|
||||||
event.event_users << speaker
|
event.event_users << speaker
|
||||||
event.room = room
|
create(:event_schedule, event: event, room: room, start_time: Date.new(2014, 03, 04))
|
||||||
event.track = track
|
event.track = track
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -42,12 +42,12 @@ describe EventSerializer, type: :serializer do
|
||||||
guid: event.guid,
|
guid: event.guid,
|
||||||
title: 'Some Talk',
|
title: 'Some Talk',
|
||||||
length: 30,
|
length: 30,
|
||||||
date: ' 2014-03-04T00:00:00+0000 ',
|
scheduled_date: ' 2014-03-04T00:00:00+0000 ',
|
||||||
language: 'English',
|
language: 'English',
|
||||||
abstract: '<p>Lorem ipsum dolor sit amet</p>',
|
abstract: '<p>Lorem ipsum dolor sit amet</p>',
|
||||||
speaker_ids: [speaker.user.id],
|
speaker_ids: [speaker.user.id],
|
||||||
type: 'Example Event Type',
|
type: 'Example Event Type',
|
||||||
room: room.guid,
|
scheduled_room: room.guid,
|
||||||
track: track.guid
|
track: track.guid
|
||||||
}
|
}
|
||||||
}.to_json
|
}.to_json
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue