mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
Implement track request acceptance
Allow track submitter to request specific dates Redirect to Tracks#edit if a track doesn't have a room or start/end date before accepting it Don't allow the submitter or the track organizers to edit the request after it has been accepted or confirmed Restrict track selection in proposals and move track selection from Proposals form to events helper Mark cfp_active of the tracks table as not null and fill in true if nil
This commit is contained in:
parent
2f9eb04219
commit
d9faffc96a
27 changed files with 909 additions and 62 deletions
|
|
@ -5,7 +5,7 @@ describe Admin::TracksController do
|
|||
|
||||
let(:conference) { create(:conference) }
|
||||
let!(:track) { create(:track, program: conference.program, color: '#800080') }
|
||||
let!(:self_organized_track) { create(:track, :self_organized, program: conference.program) }
|
||||
let!(:self_organized_track) { create(:track, :self_organized, program: conference.program, name: 'My awesome track') }
|
||||
|
||||
before :each do
|
||||
sign_in(admin)
|
||||
|
|
@ -83,6 +83,7 @@ describe Admin::TracksController do
|
|||
|
||||
it 'the new tracks has the correct attributes' do
|
||||
expect(assigns(:track).state).to eq 'confirmed'
|
||||
expect(assigns(:track).cfp_active).to eq true
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -257,4 +258,204 @@ describe Admin::TracksController do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PATCH #restart' do
|
||||
before :each do
|
||||
self_organized_track.state = 'canceled'
|
||||
self_organized_track.save!
|
||||
patch :restart, conference_id: conference.short_title, id: self_organized_track.short_name
|
||||
self_organized_track.reload
|
||||
end
|
||||
|
||||
it 'assigns the correct track' do
|
||||
expect(assigns(:track)).to eq self_organized_track
|
||||
end
|
||||
|
||||
it 'shows message in flash notice' do
|
||||
expect(flash[:notice]).to eq 'Review for My awesome track started!'
|
||||
end
|
||||
|
||||
it 'changes the track\'s state to new' do
|
||||
expect(self_organized_track.state).to eq 'new'
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PATCH #to_accept' do
|
||||
before :each do
|
||||
patch :to_accept, conference_id: conference.short_title, id: self_organized_track.short_name
|
||||
self_organized_track.reload
|
||||
end
|
||||
|
||||
it 'assigns the correct track' do
|
||||
expect(assigns(:track)).to eq self_organized_track
|
||||
end
|
||||
|
||||
it 'shows message in flash notice' do
|
||||
expect(flash[:notice]).to eq 'Track My awesome track marked as a possible acceptance!'
|
||||
end
|
||||
|
||||
it 'changes the track\'s state to to_accept' do
|
||||
expect(self_organized_track.state).to eq 'to_accept'
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PATCH #accept' do
|
||||
shared_examples 'fails to accept' do |start_date, end_date, room|
|
||||
before :each do
|
||||
self_organized_track.start_date = start_date ? Date.today : nil
|
||||
self_organized_track.end_date = end_date ? Date.today : nil
|
||||
if room
|
||||
conference.venue = create(:venue)
|
||||
self_organized_track.room = create(:room, venue: conference.venue)
|
||||
else
|
||||
self_organized_track.room = nil
|
||||
end
|
||||
self_organized_track.save!
|
||||
|
||||
patch :accept, conference_id: conference.short_title, id: self_organized_track.short_name
|
||||
self_organized_track.reload
|
||||
end
|
||||
|
||||
it 'redirects to Tracks#edit' do
|
||||
expect(response).to redirect_to edit_admin_conference_program_track_path(conference.short_title, self_organized_track)
|
||||
end
|
||||
|
||||
it 'shows message in flash alert' do
|
||||
expect(flash[:alert]).to eq 'Please make sure that the track has a room and start/end dates before accepting it'
|
||||
end
|
||||
end
|
||||
|
||||
context 'has start_date, end_date and room' do
|
||||
before :each do
|
||||
self_organized_track.start_date = Date.today
|
||||
self_organized_track.end_date = Date.today
|
||||
conference.venue = create(:venue)
|
||||
self_organized_track.room = create(:room, venue: conference.venue)
|
||||
self_organized_track.save!
|
||||
|
||||
patch :accept, conference_id: conference.short_title, id: self_organized_track.short_name
|
||||
self_organized_track.reload
|
||||
end
|
||||
|
||||
it 'assigns the correct track' do
|
||||
expect(assigns(:track)).to eq self_organized_track
|
||||
end
|
||||
|
||||
it 'shows message in flash notice' do
|
||||
expect(flash[:notice]).to eq 'Track My awesome track accepted!'
|
||||
end
|
||||
|
||||
it 'changes the track\'s state to accepted' do
|
||||
expect(self_organized_track.state).to eq 'accepted'
|
||||
end
|
||||
end
|
||||
|
||||
context 'has start_date and end_date' do
|
||||
it_behaves_like 'fails to accept', true, true, false
|
||||
end
|
||||
|
||||
context 'has start_date and room' do
|
||||
it_behaves_like 'fails to accept', true, false, true
|
||||
end
|
||||
|
||||
context 'has start_date' do
|
||||
it_behaves_like 'fails to accept', true, false, false
|
||||
end
|
||||
|
||||
context 'has end_date and room' do
|
||||
it_behaves_like 'fails to accept', false, true, true
|
||||
end
|
||||
|
||||
context 'has end_date' do
|
||||
it_behaves_like 'fails to accept', false, true, false
|
||||
end
|
||||
|
||||
context 'has room' do
|
||||
it_behaves_like 'fails to accept', false, false, true
|
||||
end
|
||||
|
||||
context 'has non of start_date, end_date, room' do
|
||||
it_behaves_like 'fails to accept', false, false, false
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PATCH #confirm' do
|
||||
before :each do
|
||||
self_organized_track.state = 'accepted'
|
||||
self_organized_track.save!
|
||||
patch :confirm, conference_id: conference.short_title, id: self_organized_track.short_name
|
||||
self_organized_track.reload
|
||||
end
|
||||
|
||||
it 'assigns the correct track' do
|
||||
expect(assigns(:track)).to eq self_organized_track
|
||||
end
|
||||
|
||||
it 'shows message in flash notice' do
|
||||
expect(flash[:notice]).to eq 'Track My awesome track confirmed!'
|
||||
end
|
||||
|
||||
it 'changes the track\'s state to confirmed' do
|
||||
expect(self_organized_track.state).to eq 'confirmed'
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PATCH #to_reject' do
|
||||
before :each do
|
||||
patch :to_reject, conference_id: conference.short_title, id: self_organized_track.short_name
|
||||
self_organized_track.reload
|
||||
end
|
||||
|
||||
it 'assigns the correct track' do
|
||||
expect(assigns(:track)).to eq self_organized_track
|
||||
end
|
||||
|
||||
it 'shows message in flash notice' do
|
||||
expect(flash[:notice]).to eq 'Track My awesome track marked as a possible rejection!'
|
||||
end
|
||||
|
||||
it 'changes the track\'s state to to_reject' do
|
||||
expect(self_organized_track.state).to eq 'to_reject'
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PATCH #reject' do
|
||||
before :each do
|
||||
patch :reject, conference_id: conference.short_title, id: self_organized_track.short_name
|
||||
self_organized_track.reload
|
||||
end
|
||||
|
||||
it 'assigns the correct track' do
|
||||
expect(assigns(:track)).to eq self_organized_track
|
||||
end
|
||||
|
||||
it 'shows message in flash notice' do
|
||||
expect(flash[:notice]).to eq 'Track My awesome track rejected!'
|
||||
end
|
||||
|
||||
it 'changes the track\'s state to rejected' do
|
||||
expect(self_organized_track.state).to eq 'rejected'
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PATCH #cancel' do
|
||||
before :each do
|
||||
self_organized_track.state = 'confirmed'
|
||||
self_organized_track.save!
|
||||
patch :cancel, conference_id: conference.short_title, id: self_organized_track.short_name
|
||||
self_organized_track.reload
|
||||
end
|
||||
|
||||
it 'assigns the correct track' do
|
||||
expect(assigns(:track)).to eq self_organized_track
|
||||
end
|
||||
|
||||
it 'shows message in flash notice' do
|
||||
expect(flash[:notice]).to eq 'Track My awesome track canceled!'
|
||||
end
|
||||
|
||||
it 'changes the track\'s state to canceled' do
|
||||
expect(self_organized_track.state).to eq 'canceled'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe TracksController do
|
||||
# A regular user should be used when the track requests have been enabled
|
||||
let(:user) { create(:admin) }
|
||||
|
||||
let(:conference) { create(:conference) }
|
||||
let!(:regular_track) { create(:track, program: conference.program) }
|
||||
let!(:self_organized_track) { create(:track, :self_organized, program: conference.program, submitter: user, color: '#800080') }
|
||||
let!(:self_organized_track) { create(:track, :self_organized, program: conference.program, submitter: user, name: 'My awesome track', color: '#800080') }
|
||||
|
||||
before :each do
|
||||
sign_in(user)
|
||||
|
|
@ -176,4 +175,67 @@ describe TracksController do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PATCH #restart' do
|
||||
before :each do
|
||||
self_organized_track.state = 'withdrawn'
|
||||
self_organized_track.save!
|
||||
patch :restart, conference_id: conference.short_title, id: self_organized_track.short_name
|
||||
self_organized_track.reload
|
||||
end
|
||||
|
||||
it 'assigns the correct track' do
|
||||
expect(assigns(:track)).to eq self_organized_track
|
||||
end
|
||||
|
||||
it 'shows message in flash notice' do
|
||||
expect(flash[:notice]).to eq 'Track My awesome track re-submitted.'
|
||||
end
|
||||
|
||||
it 'changes the track\'s state to new' do
|
||||
expect(self_organized_track.state).to eq 'new'
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PATCH #confirm' do
|
||||
before :each do
|
||||
self_organized_track.state = 'accepted'
|
||||
self_organized_track.save!
|
||||
patch :confirm, conference_id: conference.short_title, id: self_organized_track.short_name
|
||||
self_organized_track.reload
|
||||
end
|
||||
|
||||
it 'assigns the correct track' do
|
||||
expect(assigns(:track)).to eq self_organized_track
|
||||
end
|
||||
|
||||
it 'shows message in flash notice' do
|
||||
expect(flash[:notice]).to eq 'Track My awesome track confirmed.'
|
||||
end
|
||||
|
||||
it 'changes the track\'s state to confirmed' do
|
||||
expect(self_organized_track.state).to eq 'confirmed'
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PATCH #withdraw' do
|
||||
before :each do
|
||||
self_organized_track.state = 'confirmed'
|
||||
self_organized_track.save!
|
||||
patch :withdraw, conference_id: conference.short_title, id: self_organized_track.short_name
|
||||
self_organized_track.reload
|
||||
end
|
||||
|
||||
it 'assigns the correct track' do
|
||||
expect(assigns(:track)).to eq self_organized_track
|
||||
end
|
||||
|
||||
it 'shows message in flash notice' do
|
||||
expect(flash[:notice]).to eq 'Track My awesome track withdrawn.'
|
||||
end
|
||||
|
||||
it 'changes the track\'s state to withdrawn' do
|
||||
expect(self_organized_track.state).to eq 'withdrawn'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue