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.try(:mb_chars).try(: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.try(:mb_chars).try(: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