Use helpers for repeated event dropdown links
This commit is contained in:
parent
4c58104a65
commit
ad19a6d753
7 changed files with 370 additions and 146 deletions
|
|
@ -30,8 +30,8 @@ feature Event do
|
|||
visit admin_conference_program_events_path(conference.short_title)
|
||||
expect(page).to have_content 'Example Proposal'
|
||||
|
||||
click_button 'New'
|
||||
click_link "reject_event_#{@event.id}"
|
||||
click_on 'New'
|
||||
click_link 'Reject'
|
||||
expect(page).to have_content 'Event rejected!'
|
||||
@event.reload
|
||||
expect(@event.state).to eq('rejected')
|
||||
|
|
@ -41,8 +41,8 @@ feature Event do
|
|||
visit admin_conference_program_events_path(conference.short_title)
|
||||
expect(page).to have_content 'Example Proposal'
|
||||
|
||||
click_button 'New'
|
||||
click_link "accept_event_#{@event.id}"
|
||||
click_on 'New'
|
||||
click_link 'Accept'
|
||||
expect(page).to have_content 'Event accepted!'
|
||||
expect(page).to have_content 'Unconfirmed'
|
||||
@event.reload
|
||||
|
|
@ -54,8 +54,8 @@ feature Event do
|
|||
visit admin_conference_program_events_path(conference.short_title)
|
||||
expect(page).to have_content 'Example Proposal'
|
||||
|
||||
click_button 'Rejected'
|
||||
click_link "restart_event_#{@event.id}"
|
||||
click_on 'Rejected'
|
||||
click_link 'Start review'
|
||||
expect(page).to have_content 'Review started!'
|
||||
@event.reload
|
||||
expect(@event.state).to eq('new')
|
||||
|
|
|
|||
|
|
@ -189,8 +189,8 @@ feature 'Version' do
|
|||
click_button 'Update Proposal'
|
||||
|
||||
visit admin_conference_program_events_path(conference.short_title)
|
||||
click_button 'New'
|
||||
click_link 'Reject event'
|
||||
click_on 'New'
|
||||
click_link 'Reject'
|
||||
|
||||
visit conference_program_proposals_path(conference_id: conference.short_title)
|
||||
within('#events') do
|
||||
|
|
@ -198,15 +198,15 @@ feature 'Version' do
|
|||
end
|
||||
|
||||
visit admin_conference_program_events_path(conference.short_title)
|
||||
click_button 'New'
|
||||
click_link 'Accept event'
|
||||
click_on 'New'
|
||||
click_link 'Accept'
|
||||
|
||||
visit conference_program_proposals_path(conference_id: conference.short_title)
|
||||
click_link 'Confirm'
|
||||
|
||||
visit admin_conference_program_events_path(conference.short_title)
|
||||
click_button 'Confirmed'
|
||||
click_link 'Cancel event'
|
||||
click_on 'Confirmed'
|
||||
click_link 'Cancel'
|
||||
|
||||
visit admin_revision_history_path
|
||||
expect(page).to have_text("#{organizer.name} submitted new event ABC in conference #{conference.short_title}")
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ require 'spec_helper'
|
|||
|
||||
describe EventsHelper, type: :helper do
|
||||
let(:conference) { create(:conference) }
|
||||
let(:event) { create(:event, program: conference.program) }
|
||||
let(:event) { create(:event_full, program: conference.program) }
|
||||
let(:my_vote) { 3 }
|
||||
let(:max_rating) { 5 }
|
||||
let(:fraction) { my_vote.to_s + '/' + max_rating.to_s }
|
||||
|
|
@ -56,4 +56,224 @@ describe EventsHelper, type: :helper do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#event_switch_checkbox' do
|
||||
let(:result) do
|
||||
event_switch_checkbox(event, :is_highlight, conference.short_title)
|
||||
end
|
||||
|
||||
it 'should build a switch checkbox' do
|
||||
expect(result).to include(
|
||||
'<input type="checkbox"',
|
||||
'class="switch-checkbox"'
|
||||
)
|
||||
end
|
||||
|
||||
it 'should patch to the admin event url' do
|
||||
expect(result).to include(
|
||||
'method="patch"',
|
||||
"url=\"/admin/conferences/#{conference.short_title}/program" \
|
||||
"/events/#{event.id}?event%5Bis_highlight%5D=\""
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#event_type_dropdown' do
|
||||
let(:event_types) do
|
||||
[
|
||||
event.event_type,
|
||||
create(:event_type, title: 'foo'),
|
||||
create(:event_type, title: 'bar')
|
||||
]
|
||||
end
|
||||
let(:result) do
|
||||
event_type_dropdown(event, event_types, conference.short_title)
|
||||
end
|
||||
|
||||
it 'builds a bootstrap dropdown list of event types' do
|
||||
expect(result).to include(
|
||||
'<div class="dropdown">' \
|
||||
'<a class="dropdown-toggle" href="#" data-toggle="dropdown">' \
|
||||
"<span>#{h event.event_type.title}</span><span class=\"caret\"></span>" \
|
||||
'</a><ul class="dropdown-menu">'
|
||||
)
|
||||
event_types.each do |event_type|
|
||||
expect(result).to include(
|
||||
'<li><a rel="nofollow" data-method="patch" ' \
|
||||
"href=\"/admin/conferences/#{conference.short_title}/program/" \
|
||||
"events/#{event.id}?event%5Bevent_type_id%5D=#{event_type.id}\">" \
|
||||
"#{h event_type.title}</a></li>"
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#track_dropdown' do
|
||||
let(:tracks) do
|
||||
[
|
||||
event.track,
|
||||
create(:track, name: 'foo'),
|
||||
create(:track, name: 'bar')
|
||||
]
|
||||
end
|
||||
let(:result) do
|
||||
track_dropdown(event, tracks, conference.short_title)
|
||||
end
|
||||
|
||||
it 'builds a bootstrap dropdown list of tracks' do
|
||||
expect(result).to include(
|
||||
'<div class="dropdown">' \
|
||||
'<a class="dropdown-toggle" href="#" data-toggle="dropdown">' \
|
||||
"<span>#{h event.track.name}</span><span class=\"caret\"></span>" \
|
||||
'</a><ul class="dropdown-menu">'
|
||||
)
|
||||
tracks.each do |track|
|
||||
expect(result).to include(
|
||||
'<li><a rel="nofollow" data-method="patch" ' \
|
||||
"href=\"/admin/conferences/#{conference.short_title}/program/" \
|
||||
"events/#{event.id}?event%5Btrack_id%5D=#{track.id}\">" \
|
||||
"#{h track.name}</a></li>"
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#difficulty_dropdown' do
|
||||
let(:difficulties) do
|
||||
[
|
||||
event.difficulty_level,
|
||||
create(:difficulty_level, title: 'foo'),
|
||||
create(:difficulty_level, title: 'bar')
|
||||
]
|
||||
end
|
||||
let(:result) do
|
||||
difficulty_dropdown(event, difficulties, conference.short_title)
|
||||
end
|
||||
|
||||
it 'builds a bootstrap dropdown list of difficulty levels' do
|
||||
expect(result).to include(
|
||||
'<div class="dropdown">' \
|
||||
'<a class="dropdown-toggle" href="#" data-toggle="dropdown">' \
|
||||
"<span>#{h event.difficulty_level.title}</span>" \
|
||||
'<span class="caret"></span>' \
|
||||
'</a><ul class="dropdown-menu">'
|
||||
)
|
||||
difficulties.each do |difficulty|
|
||||
expect(result).to include(
|
||||
'<li><a rel="nofollow" data-method="patch" ' \
|
||||
"href=\"/admin/conferences/#{conference.short_title}/program/" \
|
||||
"events/#{event.id}?event%5Bdifficulty_level_id%5D=#{difficulty.id}\">" \
|
||||
"#{h difficulty.title}</a></li>"
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#state_dropdown' do
|
||||
let(:conference_id) { conference.short_title }
|
||||
let(:email_settings) { conference.email_settings }
|
||||
|
||||
setup do
|
||||
allow(event).to receive(:transition_possible?).at_least(:once) { false }
|
||||
end
|
||||
|
||||
it 'builds a bootstrap dropdown list of event states' do
|
||||
result = state_dropdown(event, conference_id, email_settings)
|
||||
expect(result).to include(
|
||||
'<div class="dropdown">' \
|
||||
'<a class="dropdown-toggle" href="#" data-toggle="dropdown">' \
|
||||
"<span>#{h event.state.humanize}</span><span class=\"caret\"></span>" \
|
||||
'</a><ul class="dropdown-menu">'
|
||||
)
|
||||
end
|
||||
|
||||
it 'handles the accept transition' do
|
||||
tag = '<li><a rel="nofollow" data-method="patch" ' \
|
||||
"href=\"/admin/conferences/#{conference_id}/program/" \
|
||||
"events/#{event.id}/accept\">" \
|
||||
'Accept</a></li>'
|
||||
result = state_dropdown(event, conference_id, email_settings)
|
||||
expect(result).not_to include(tag)
|
||||
|
||||
expect(event).to receive(:transition_possible?).with(:accept) { true }
|
||||
result = state_dropdown(event, conference_id, email_settings)
|
||||
expect(result).to include(tag)
|
||||
end
|
||||
|
||||
it 'handles the accept transition without email' do
|
||||
expect(event).to receive(:transition_possible?).with(:accept) { true }
|
||||
expect(email_settings).to receive(:send_on_accepted?) { true }
|
||||
result = state_dropdown(event, conference_id, email_settings)
|
||||
expect(result).to include(
|
||||
'<li><a rel="nofollow" data-method="patch" ' \
|
||||
"href=\"/admin/conferences/#{conference_id}/program/" \
|
||||
"events/#{event.id}/accept?send_mail=false\">" \
|
||||
'Accept (without email)</a></li>'
|
||||
)
|
||||
end
|
||||
|
||||
it 'handles the reject transition' do
|
||||
tag = '<li><a rel="nofollow" data-method="patch" ' \
|
||||
"href=\"/admin/conferences/#{conference_id}/program/" \
|
||||
"events/#{event.id}/reject\">" \
|
||||
'Reject</a></li>'
|
||||
result = state_dropdown(event, conference_id, email_settings)
|
||||
expect(result).not_to include(tag)
|
||||
|
||||
expect(event).to receive(:transition_possible?).with(:reject) { true }
|
||||
result = state_dropdown(event, conference_id, email_settings)
|
||||
expect(result).to include(tag)
|
||||
end
|
||||
|
||||
it 'handles the reject transition without email' do
|
||||
expect(event).to receive(:transition_possible?).with(:reject) { true }
|
||||
expect(email_settings).to receive(:send_on_rejected?) { true }
|
||||
result = state_dropdown(event, conference_id, email_settings)
|
||||
expect(result).to include(
|
||||
'<li><a rel="nofollow" data-method="patch" ' \
|
||||
"href=\"/admin/conferences/#{conference_id}/program/" \
|
||||
"events/#{event.id}/reject?send_mail=false\">" \
|
||||
'Reject (without email)</a></li>'
|
||||
)
|
||||
end
|
||||
|
||||
it 'handles the restart transition' do
|
||||
tag = '<li><a rel="nofollow" data-method="patch" ' \
|
||||
"href=\"/admin/conferences/#{conference_id}/program/" \
|
||||
"events/#{event.id}/restart\">" \
|
||||
'Start review</a></li>'
|
||||
result = state_dropdown(event, conference_id, email_settings)
|
||||
expect(result).not_to include(tag)
|
||||
|
||||
expect(event).to receive(:transition_possible?).with(:restart) { true }
|
||||
result = state_dropdown(event, conference_id, email_settings)
|
||||
expect(result).to include(tag)
|
||||
end
|
||||
|
||||
it 'handles the confirm transition' do
|
||||
tag = '<li><a rel="nofollow" data-method="patch" ' \
|
||||
"href=\"/admin/conferences/#{conference_id}/program/" \
|
||||
"events/#{event.id}/confirm\">" \
|
||||
'Confirm</a></li>'
|
||||
result = state_dropdown(event, conference_id, email_settings)
|
||||
expect(result).not_to include(tag)
|
||||
|
||||
expect(event).to receive(:transition_possible?).with(:confirm) { true }
|
||||
result = state_dropdown(event, conference_id, email_settings)
|
||||
expect(result).to include(tag)
|
||||
end
|
||||
|
||||
it 'handles the cancel transition' do
|
||||
tag = '<li><a rel="nofollow" data-method="patch" ' \
|
||||
"href=\"/admin/conferences/#{conference_id}/program/" \
|
||||
"events/#{event.id}/cancel\">" \
|
||||
'Cancel</a></li>'
|
||||
result = state_dropdown(event, conference_id, email_settings)
|
||||
expect(result).not_to include(tag)
|
||||
|
||||
expect(event).to receive(:transition_possible?).with(:cancel) { true }
|
||||
result = state_dropdown(event, conference_id, email_settings)
|
||||
expect(result).to include(tag)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue