Track related refactoring
Add roles as nested routes to track (for the track organizer role) Allow transition from to_accept to to_reject and backwards Split Track#valid_dates validation to many independent ones Show all the confirmed tracks in the conference's splashpage Add comment in admin/Tracks#toggle_cfp_inclusion Rewrite admin/TracksController#accept spec Add feature spec for track requests Change 'In' to 'Room' in Tracks#index Rewrite Track#overlapping Refactor code in ProposalsController Fix typos
This commit is contained in:
parent
9c4892bfc8
commit
27fa79a826
21 changed files with 279 additions and 144 deletions
|
|
@ -3,7 +3,7 @@ require 'spec_helper'
|
|||
describe Cfp do
|
||||
subject { create(:cfp) }
|
||||
let!(:conference) { create(:conference, end_date: Date.today) }
|
||||
let!(:cfp) { create(:cfp, start_date: Date.today - 2, end_date: Date.today - 1, program_id: conference.program.id) }
|
||||
let!(:cfp) { create(:cfp, cfp_type: 'events', start_date: Date.today - 2, end_date: Date.today - 1, program_id: conference.program.id) }
|
||||
|
||||
describe 'validations' do
|
||||
it { is_expected.to validate_presence_of(:cfp_type) }
|
||||
|
|
@ -18,7 +18,7 @@ describe Cfp do
|
|||
end
|
||||
|
||||
it 'returns nil when the cfp for events doesn\'t exist' do
|
||||
conference.program.cfp.destroy
|
||||
cfp.destroy!
|
||||
expect(conference.program.cfps.for_events).to eq nil
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -68,14 +68,14 @@ describe Track do
|
|||
it { is_expected.to_not validate_presence_of(:description) }
|
||||
end
|
||||
|
||||
describe '#valid_dates' do
|
||||
describe '#dates_within_conference_dates' do
|
||||
before :each do
|
||||
@conference = create(:conference, start_date: 1.day.ago, end_date: 2.days.from_now)
|
||||
end
|
||||
|
||||
context 'is valid' do
|
||||
it 'when the track\'s start date is before it\'s end date and between the conference start/end dates' do
|
||||
track = build(:track, start_date: Date.today, end_date: Date.tomorrow, program: @conference.program)
|
||||
it 'when the track\'s dates are between the conference\'s dates' do
|
||||
track = build(:track, start_date: @conference.start_date, end_date: @conference.end_date, program: @conference.program)
|
||||
expect(track.valid?).to eq true
|
||||
end
|
||||
end
|
||||
|
|
@ -84,27 +84,42 @@ describe Track do
|
|||
it 'when the track\'s start date is before the conference\'s start date' do
|
||||
track = build(:track, start_date: 2.days.ago, end_date: Date.tomorrow, program: @conference.program)
|
||||
expect(track.valid?).to eq false
|
||||
expect(track.errors[:start_date]).to eq ["can't be before the conference start date (#{1.day.ago.to_date})"]
|
||||
end
|
||||
|
||||
it 'when the track\'s end date is before the conference\'s start date' do
|
||||
track = build(:track, start_date: 3.days.ago, end_date: 2.days.ago, program: @conference.program)
|
||||
expect(track.valid?).to eq false
|
||||
expect(track.errors[:end_date]).to eq ["can't be before the conference start date (#{1.day.ago.to_date})"]
|
||||
expect(track.errors[:start_date]).to eq ["can't be outside of the conference's dates (#{1.day.ago.to_date}-#{2.days.from_now.to_date})"]
|
||||
end
|
||||
|
||||
it 'when the track\'s start date is after the conference\'s end date' do
|
||||
track = build(:track, start_date: 3.days.from_now, end_date: 4.days.from_now, program: @conference.program)
|
||||
expect(track.valid?).to eq false
|
||||
expect(track.errors[:start_date]).to eq ["can't be after the conference end date (#{2.days.from_now.to_date})"]
|
||||
expect(track.errors[:start_date]).to eq ["can't be outside of the conference's dates (#{1.day.ago.to_date}-#{2.days.from_now.to_date})"]
|
||||
end
|
||||
|
||||
it 'when the track\'s end date is before the conference\'s start date' do
|
||||
track = build(:track, start_date: 3.days.ago, end_date: 2.days.ago, program: @conference.program)
|
||||
expect(track.valid?).to eq false
|
||||
expect(track.errors[:end_date]).to eq ["can't be outside of the conference's dates (#{1.day.ago.to_date}-#{2.days.from_now.to_date})"]
|
||||
end
|
||||
|
||||
it 'when the track\'s end date is after the conference\'s end date' do
|
||||
track = build(:track, start_date: Date.today, end_date: 3.days.from_now, program: @conference.program)
|
||||
expect(track.valid?).to eq false
|
||||
expect(track.errors[:end_date]).to eq ["can't be after the conference end date (#{2.days.from_now.to_date})"]
|
||||
expect(track.errors[:end_date]).to eq ["can't be outside of the conference's dates (#{1.day.ago.to_date}-#{2.days.from_now.to_date})"]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#start_date_before_end_date' do
|
||||
before :each do
|
||||
@conference = create(:conference, start_date: 1.day.ago, end_date: 2.days.from_now)
|
||||
end
|
||||
|
||||
context 'is valid' do
|
||||
it 'when the track\'s start date is before its end date' do
|
||||
track = build(:track, start_date: Date.today, end_date: Date.tomorrow, program: @conference.program)
|
||||
expect(track.valid?).to eq true
|
||||
end
|
||||
end
|
||||
|
||||
context 'is invalid' do
|
||||
it 'when the track\'s start date is after it\'s end date' do
|
||||
track = build(:track, start_date: 1.day.from_now, end_date: 1.day.ago)
|
||||
expect(track.valid?).to eq false
|
||||
|
|
@ -235,7 +250,7 @@ describe Track do
|
|||
end
|
||||
|
||||
context 'includes' do
|
||||
it 'when track is confirmed' do
|
||||
it 'tracks with state \'confirmed\'' do
|
||||
confirmed_track = create(:track, state: 'confirmed', program: @program)
|
||||
expect(@program.tracks.confirmed.include?(confirmed_track)).to eq true
|
||||
end
|
||||
|
|
@ -243,7 +258,7 @@ describe Track do
|
|||
|
||||
context 'excludes' do
|
||||
%w[new to_accept accepted to_reject rejected canceled withdrawn].each do |state|
|
||||
it "when track is #{state.humanize}" do
|
||||
it "tracks with state '#{state}'" do
|
||||
unconfirmed_track = create(:track, state: state, program: @program)
|
||||
expect(@program.tracks.confirmed.include?(unconfirmed_track)).to eq false
|
||||
end
|
||||
|
|
@ -310,10 +325,10 @@ describe Track do
|
|||
transitions = [:restart, :to_accept, :accept, :confirm, :to_reject, :reject, :cancel, :withdraw]
|
||||
|
||||
states_transitions = { new: { restart: false, to_accept: true, accept: true, confirm: false, to_reject: true, reject: true, cancel: false, withdraw: true },
|
||||
to_accept: { restart: false, to_accept: false, accept: true, confirm: false, to_reject: false, reject: false, cancel: true, withdraw: true },
|
||||
to_accept: { restart: false, to_accept: false, accept: true, confirm: false, to_reject: true, reject: false, cancel: true, withdraw: true },
|
||||
accepted: { restart: false, to_accept: false, accept: false, confirm: true, to_reject: false, reject: false, cancel: true, withdraw: true },
|
||||
confirmed: { restart: false, to_accept: false, accept: false, confirm: false, to_reject: false, reject: false, cancel: true, withdraw: true },
|
||||
to_reject: { restart: false, to_accept: false, accept: false, confirm: false, to_reject: false, reject: true, cancel: true, withdraw: true },
|
||||
to_reject: { restart: false, to_accept: true, accept: false, confirm: false, to_reject: false, reject: true, cancel: true, withdraw: true },
|
||||
rejected: { restart: true, to_accept: false, accept: false, confirm: false, to_reject: false, reject: false, cancel: false, withdraw: false },
|
||||
canceled: { restart: true, to_accept: false, accept: false, confirm: false, to_reject: false, reject: false, cancel: false, withdraw: false },
|
||||
withdrawn: { restart: true, to_accept: false, accept: false, confirm: false, to_reject: false, reject: false, cancel: false, withdraw: false } }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue