From b533b1594f19bc2fc304695474ebd0906e40fb77 Mon Sep 17 00:00:00 2001 From: Chrisbr Date: Wed, 14 May 2014 17:27:42 +0200 Subject: [PATCH] Refactoring conference feature test --- spec/features/conference_spec.rb | 63 ++++------------------------ spec/features/venue_spec.rb | 70 ++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 56 deletions(-) create mode 100644 spec/features/venue_spec.rb diff --git a/spec/features/conference_spec.rb b/spec/features/conference_spec.rb index 4e28f449..90f35f0f 100644 --- a/spec/features/conference_spec.rb +++ b/spec/features/conference_spec.rb @@ -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 diff --git a/spec/features/venue_spec.rb b/spec/features/venue_spec.rb new file mode 100644 index 00000000..7f2e82a3 --- /dev/null +++ b/spec/features/venue_spec.rb @@ -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