Refactoring conference feature test

This commit is contained in:
Chrisbr 2014-05-14 17:27:42 +02:00
parent a8c9c2f2d4
commit b533b1594f
2 changed files with 77 additions and 56 deletions

View file

@ -19,8 +19,13 @@ feature Conference do
select('(GMT+01:00) Berlin', from: 'conference[timezone]')
page.execute_script("$('#conference-start-datepicker').val('21/12/2014')")
page.execute_script("$('#conference-end-datepicker').val('24/12/2014')")
today = Date.today - 1
page.
execute_script("$('#conference-start-datepicker').val('" +
"#{today.strftime('%d/%m/%Y')}')")
page.
execute_script("$('#conference-end-datepicker').val('" +
"#{(today + 7).strftime('%d/%m/%Y')}')")
click_button 'Create Conference'
@ -51,66 +56,12 @@ feature Conference do
end
end
shared_examples 'venue' do |user|
scenario 'adds and updates venue' do
conference = create(:conference)
sign_in create(user)
visit admin_conference_venue_info_path(conference_id: conference.short_title)
expect(page.find("//*[@id='venue_submit_action']").text).to eq('Update Venue')
fill_in 'venue_name', with: 'Example University'
fill_in 'venue_address', with: 'Example Street 42 \n 12345 Example City \n Germany'
fill_in 'venue_website', with: 'www.example.com'
fill_in 'venue_description',
with: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam' \
'nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,' \
'sed diam voluptua.'
click_button 'Update Venue'
expect(flash).
to eq('Venue was successfully updated.')
venue = Conference.find(conference.id).venue
expect(venue.name).to eq('Example University')
expect(venue.address).to eq('Example Street 42 \n 12345 Example City \n Germany')
expect(venue.website).to eq('www.example.com')
expect(venue.description).to eq('Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam' \
'nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,' \
'sed diam voluptua.')
fill_in 'venue_name', with: 'Example University new'
fill_in 'venue_address', with: 'Example Street 42 \n 12345 Example City \n Germany new'
fill_in 'venue_website', with: 'www.example.com new'
fill_in 'venue_description',
with: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam' \
'nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,' \
'sed diam voluptua. new'
click_button 'Update Venue'
expect(flash).
to eq('Venue was successfully updated.')
venue.reload
expect(venue.name).to eq('Example University new')
expect(venue.address).to eq('Example Street 42 \n 12345 Example City \n Germany new')
expect(venue.website).to eq('www.example.com new')
expect(venue.description).to eq('Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam' \
'nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,' \
'sed diam voluptua. new')
end
end
describe 'admin' do
it_behaves_like 'add and update conference', :admin
it_behaves_like 'venue', :admin
end
describe 'organizer' do
it_behaves_like 'add and update conference', :organizer
it_behaves_like 'venue', :organizer
end
end

View file

@ -0,0 +1,70 @@
require 'spec_helper'
feature Conference do
# It is necessary to use bang version of let to build roles before user
let!(:organizer_role) { create(:organizer_role) }
let!(:participant_role) { create(:participant_role) }
let!(:admin_role) { create(:admin_role) }
shared_examples 'venue' do |user|
scenario 'adds and updates venue' do
conference = create(:conference)
sign_in create(user)
visit admin_conference_venue_info_path(
conference_id: conference.short_title)
expect(page.find("//*[@id='venue_submit_action']").
text).to eq('Update Venue')
fill_in 'venue_name', with: 'Example University'
fill_in 'venue_address', with: 'Example Street 42 \n' +
'12345 Example City \n Germany'
fill_in 'venue_website', with: 'www.example.com'
fill_in 'venue_description',
with: 'Lorem ipsum dolor sit amet, consetetur' \
'sadipscing elitr, sed diam nonumy eirmod tempor'
click_button 'Update Venue'
expect(flash).
to eq('Venue was successfully updated.')
venue = Conference.find(conference.id).venue
expect(venue.name).to eq('Example University')
expect(venue.address).to eq('Example Street 42 \n' \
'12345 Example City \n Germany')
expect(venue.website).to eq('www.example.com')
expect(venue.description).to eq('Lorem ipsum dolor sit amet, consetetur' \
'sadipscing elitr, sed diam nonumy eirmod tempor')
fill_in 'venue_name', with: 'Example University new'
fill_in 'venue_address', with: 'Example Street 42 \n ' \
'12345 Example City \n Germany new'
fill_in 'venue_website', with: 'www.example.com new'
fill_in 'venue_description',
with: 'new'
click_button 'Update Venue'
expect(flash).
to eq('Venue was successfully updated.')
venue.reload
expect(venue.name).to eq('Example University new')
expect(venue.address).to eq('Example Street 42 \n ' \
'12345 Example City \n Germany new')
expect(venue.website).to eq('www.example.com new')
expect(venue.description).to eq('new')
end
end
describe 'admin' do
it_behaves_like 'venue', :admin
end
describe 'organizer' do
it_behaves_like 'venue', :organizer
end
end