clarion/spec/features/management_interface_spec.rb
2019-04-28 00:52:31 +03:00

158 lines
5.8 KiB
Ruby

require "rails_helper"
feature 'Conference management' do
before do
Rails.application.load_seed
end
scenario 'Creating a new conference' do
sign_in_as_admin
visit management_root_path
expect(page).to_not have_content "FooConf"
create_new_conference
visit management_root_path
expect(page).to have_content "FooConf"
end
scenario 'Enabling the call for papers of a conference' do
sign_in_as_admin
create_new_conference
visit root_path
expect(page).to have_link I18n.t('views.welcome.submit_event', event_type: '')
visit management_root_path
click_on_first_conference_in_management_root
click_on I18n.t('management.conferences.show.cfp_status')
expect(page).to_not have_link I18n.t('views.welcome.submit_event', event_type: '')
end
scenario 'Editing an existing conference' do
sign_in_as_admin
create_new_conference
click_on I18n.t('actions.edit.button', model: Conference.model_name.human)
fill_in Conference.human_attribute_name(:title), with: 'FooBarBazConf'
page.find('.btn.btn-primary').click
expect(page).to have_content 'FooBarBazConf'
end
scenario 'Deleting a newly created conference', js: true do
sign_in_as_admin
create_new_conference(host_name: '127.0.0.1')
click_on 'Clarion'
expect(page).to have_content 'FooConf'
click_on_first_conference_in_management_root
accept_confirm do
click_on I18n.t('actions.destroy.button', model: Conference.model_name.human)
end
visit management_root_path
expect(page).to_not have_content 'FooConf'
end
scenario 'Reviewing an event' do
sign_in_as_admin
create_new_conference
submit_an_event_proposition(true)
visit management_root_path
click_on_first_conference_in_management_root
click_on I18n.t('activerecord.models.event', count: 2).capitalize
click_on I18n.t('actions.view.button', model: Event.model_name.human)
expect(page).to have_content('This is just a sample title of an event')
end
scenario 'Editing an event' do
sign_in_as_admin
create_new_conference
submit_an_event_proposition(true)
visit management_root_path
click_on_first_conference_in_management_root
click_on I18n.t('activerecord.models.event', count: 2).capitalize
expect(page).to have_content('This is just a sample title of an event')
click_on I18n.t('actions.edit.button', model: Event.model_name.human)
fill_in Event.human_attribute_name(:title), with: 'This is just a sample edited title of an event'
click_on I18n.t('helpers.submit.event.update')
expect(page).to have_content I18n.t('management.events.update.event_successfully_updated')
expect(page).to have_content 'This is just a sample edited title of an event'
end
scenario 'Approving an event from its detailed view' do
sign_in_as_admin
create_new_conference
submit_an_event_proposition(true)
visit management_root_path
click_on_first_conference_in_management_root
click_on I18n.t('activerecord.models.event', count: 2).capitalize
expect(page).to_not have_button I18n.t("status.approved")
click_on I18n.t('actions.view.button', model: Event.model_name.human)
click_on I18n.t("status.undecided")
click_on I18n.t("status.approved")
click_on I18n.t('activerecord.models.event', count: 2).capitalize
expect(page).to have_button I18n.t("status.approved")
end
scenario 'Approving an event from the events index' do
sign_in_as_admin
create_new_conference
submit_an_event_proposition(true)
visit management_root_path
click_on_first_conference_in_management_root
click_on I18n.t('activerecord.models.event', count: 2).capitalize
expect(page).to_not have_button I18n.t("status.approved")
click_on I18n.t("status.undecided")
click_on I18n.t("status.approved")
expect(page).to have_button I18n.t("status.approved")
end
scenario 'Creating a profile for a submitter' do
sign_in_as_admin
create_new_conference
submit_an_event_proposition(true)
visit management_root_path
click_on_first_conference_in_management_root
click_on I18n.t('activerecord.models.personal_profile', count: 2).capitalize
click_on I18n.t('actions.create.title', model: PersonalProfile.model_name.human)
fill_in_personal_profile
expect(page).to have_content I18n.t('management.personal_profiles.create.successfully_created')
expect(page).to have_content 'Foo Bar'
end
scenario "Cloning the last profile of a submitter that did not update it when they submitted" do
time_travel_to(2.years.ago) do
sign_in_as_admin
create_new_conference
sign_out
visit root_path
click_on I18n.t('views.welcome.submit_event', event_type: Conference.first.event_types.first.name.downcase)
click_on I18n.t(:registration)
register_a_new_user(false)
submit_an_event_proposition
fill_in_personal_profile
sign_out
end
sign_in_as_admin
create_new_conference
sign_out
visit root_path
click_on I18n.t('views.welcome.submit_event', event_type: Conference.first.event_types.first.name.downcase)
sign_in_as_an_existing_user(false)
submit_an_event_proposition(false)
expect(page).to have_content I18n.t(:please_fill_in_your_speaker_profile)
sign_out
verify_the_event_is_submitted
click_on I18n.t('activerecord.models.personal_profile', count: 2).capitalize
expect(page).to have_text(I18n.t('management.personal_profiles.index.no_profile'))
click_on I18n.t('actions.clone.title', model: PersonalProfile.model_name.human)
expect(page).to have_text(I18n.t('management.personal_profiles.create.successfully_created'))
click_on I18n.t('activerecord.models.personal_profile', count: 2).capitalize
expect(page).to_not have_text(I18n.t('management.personal_profiles.index.no_profile'))
end
end