diff --git a/.coveralls.yml b/.coveralls.yml deleted file mode 100644 index cf27a370..00000000 --- a/.coveralls.yml +++ /dev/null @@ -1 +0,0 @@ -service_name: travis-pro diff --git a/app/controllers/spina/admin/conferences/application_controller.rb b/app/controllers/spina/admin/conferences/application_controller.rb index f4e3cc9b..f7c8ba75 100644 --- a/app/controllers/spina/admin/conferences/application_controller.rb +++ b/app/controllers/spina/admin/conferences/application_controller.rb @@ -16,6 +16,7 @@ class ApplicationController < ::Spina::Admin::AdminController def set_locale @locale = params[:locale] || I18n.default_locale + Mobility.locale = @locale end end end diff --git a/app/controllers/spina/admin/conferences/presentations_controller.rb b/app/controllers/spina/admin/conferences/presentations_controller.rb index efcff7d4..1a5935ac 100644 --- a/app/controllers/spina/admin/conferences/presentations_controller.rb +++ b/app/controllers/spina/admin/conferences/presentations_controller.rb @@ -29,7 +29,7 @@ def new # Renders a form for an existing presentation. # @return [void] def edit - add_breadcrumb @presentation.title + add_breadcrumb @presentation.title.truncate(33, separator: /\s/, omission: '…') end # Creates a presentation. @@ -58,7 +58,7 @@ def update # rubocop:disable Metrics/MethodLength else respond_to do |format| format.html do - add_breadcrumb @presentation.title + add_breadcrumb @presentation.title.try(:truncate, 33, separator: /\s/, omission: '…') render :edit end format.turbo_stream { render partial: 'errors', locals: { errors: @presentation.errors } } @@ -74,7 +74,7 @@ def destroy # rubocop:disable Metrics/MethodLength else respond_to do |format| format.html do - add_breadcrumb @presentation.title + add_breadcrumb @presentation.title.try(:truncate, 33, separator: /\s/, omission: '…') render :edit end format.turbo_stream { render partial: 'errors', locals: { errors: @presentation.errors } } diff --git a/app/views/spina/admin/conferences/application/_breadcrumbs.html.haml b/app/views/spina/admin/conferences/application/_breadcrumbs.html.haml new file mode 100644 index 00000000..bc8c2fad --- /dev/null +++ b/app/views/spina/admin/conferences/application/_breadcrumbs.html.haml @@ -0,0 +1,16 @@ +.breadcrumbs + = render_breadcrumbs separator: tag.div(class: 'divider') + %span{ style: 'margin-left: 10px' } + - if Spina.config.locales.many? + %div{ style: 'display: inline-block', data: { dropdown: true } } + = link_to '#', class: %w[button button-default button-small], style: 'margin-left: 0; margin-right: 0', + data: { trigger: 'dropdown', target: '#locales' } do + .button-content + = icon('comment') + = t "spina.languages.#{@locale}" + %i.icon.icon-chevron-down{ style: 'font-size: 9px; margin-right: 0; margin-left: 5px' } + %ul#locales + - Spina.config.locales.each do |locale| + %li + = link_to_if @locale.to_s == locale.to_s, t("spina.languages.#{locale}"), "?locale=#{locale}", style: 'font-weight: 600' do + = link_to t("spina.languages.#{locale}"), "?locale=#{locale}" diff --git a/app/views/spina/admin/conferences/conferences/_form.html.haml b/app/views/spina/admin/conferences/conferences/_form.html.haml index 6065e205..400a52de 100644 --- a/app/views/spina/admin/conferences/conferences/_form.html.haml +++ b/app/views/spina/admin/conferences/conferences/_form.html.haml @@ -4,7 +4,7 @@ = form_for [:admin_conferences, @conference], html: { autocomplete: 'off' } do |f| %header#header - = render partial: 'spina/admin/shared/breadcrumbs' + = render partial: @conference.new_record? ? 'spina/admin/shared/breadcrumbs' : 'breadcrumbs' #header_actions %button.button.button-primary{ type: 'submit' } @@ -19,9 +19,12 @@ %li{ class: ('active' if i == 0) } = link_to t(".#{tab}"), "##{tab}" - #conference_details.tab-content.active= render 'form_conference_details', f: f - #parts.tab-content= render 'form_parts', f: f - #rooms.tab-content= render partial: 'rooms', object: @conference.rooms - #presentation_types.tab-content= render partial: 'presentation_types', object: @conference.presentation_types - #delegates.tab-content= render partial: 'delegates', object: @conference.delegates - #presentations.tab-content= render partial: 'presentations', object: @conference.presentations + = hidden_field_tag :locale, @locale + + - Mobility.with_locale(@locale) do + #conference_details.tab-content.active= render 'form_conference_details', f: f + #parts.tab-content= render 'form_parts', f: f + #rooms.tab-content= render partial: 'rooms', object: @conference.rooms + #presentation_types.tab-content= render partial: 'presentation_types', object: @conference.presentation_types + #delegates.tab-content= render partial: 'delegates', object: @conference.delegates + #presentations.tab-content= render partial: 'presentations', object: @conference.presentations diff --git a/app/views/spina/admin/conferences/delegates/_form.html.haml b/app/views/spina/admin/conferences/delegates/_form.html.haml index 97077c3a..059e516b 100644 --- a/app/views/spina/admin/conferences/delegates/_form.html.haml +++ b/app/views/spina/admin/conferences/delegates/_form.html.haml @@ -4,7 +4,7 @@ = form_for [:admin_conferences, @delegate], html: { autocomplete: 'off' } do |f| %header#header - = render partial: 'spina/admin/shared/breadcrumbs' + = render partial: @delegate.new_record? ? 'spina/admin/shared/breadcrumbs' : 'breadcrumbs' #header_actions %button.button.button-primary{ type: 'submit' } @@ -19,6 +19,9 @@ %li{ class: ('active' if i == 0) } = link_to t(".#{tab}"), "##{tab}" - #delegate_details.tab-content.active= render 'form_delegate_details', f: f - #conferences.tab-content= render partial: 'conferences', object: @delegate.conferences - #presentations.tab-content= render partial: 'presentations', object: @delegate.presentations + = hidden_field_tag :locale, @locale + + - Mobility.with_locale(@locale) do + #delegate_details.tab-content.active= render 'form_delegate_details', f: f + #conferences.tab-content= render partial: 'conferences', object: @delegate.conferences + #presentations.tab-content= render partial: 'presentations', object: @delegate.presentations diff --git a/app/views/spina/admin/conferences/dietary_requirements/_form.html.haml b/app/views/spina/admin/conferences/dietary_requirements/_form.html.haml index 0eddbab7..83b43976 100644 --- a/app/views/spina/admin/conferences/dietary_requirements/_form.html.haml +++ b/app/views/spina/admin/conferences/dietary_requirements/_form.html.haml @@ -4,7 +4,7 @@ = form_for [:admin_conferences, @dietary_requirement], html: { autocomplete: 'off' } do |f| %header#header - = render partial: 'spina/admin/shared/breadcrumbs' + = render partial: @dietary_requirement.new_record? ? 'spina/admin/shared/breadcrumbs' : 'breadcrumbs' #header_actions %button.button.button-primary{ type: 'submit' } @@ -19,5 +19,8 @@ %li{ class: ('active' if i == 0) } = link_to t(".#{tab}"), "##{tab}" - #dietary_requirement_details.tab-content.active= render 'form_dietary_requirement_details', f: f - #delegates.tab-content= render partial: 'delegates', object: @dietary_requirement.delegates + = hidden_field_tag :locale, @locale + + - Mobility.with_locale(@locale) do + #dietary_requirement_details.tab-content.active= render 'form_dietary_requirement_details', f: f + #delegates.tab-content= render partial: 'delegates', object: @dietary_requirement.delegates diff --git a/app/views/spina/admin/conferences/institutions/_form.html.haml b/app/views/spina/admin/conferences/institutions/_form.html.haml index 8e8afb73..6ccf1edd 100644 --- a/app/views/spina/admin/conferences/institutions/_form.html.haml +++ b/app/views/spina/admin/conferences/institutions/_form.html.haml @@ -4,7 +4,7 @@ = form_for [:admin_conferences, @institution], html: { autocomplete: 'off' } do |f| %header#header - = render partial: 'spina/admin/shared/breadcrumbs' + = render partial: @institution.new_record? ? 'spina/admin/shared/breadcrumbs' : 'breadcrumbs' #header_actions %button.button.button-primary{ type: 'submit' } @@ -19,6 +19,9 @@ %li{ class: ('active' if i == 0) } = link_to t(".#{tab}"), "##{tab}" - #institution_details.tab-content.active= render 'form_institution_details', f: f - #rooms.tab-content= render partial: 'rooms', object: @institution.rooms - #delegates.tab-content= render partial: 'delegates', object: @institution.delegates + = hidden_field_tag :locale, @locale + + - Mobility.with_locale(@locale) do + #institution_details.tab-content.active= render 'form_institution_details', f: f + #rooms.tab-content= render partial: 'rooms', object: @institution.rooms + #delegates.tab-content= render partial: 'delegates', object: @institution.delegates diff --git a/app/views/spina/admin/conferences/presentation_attachment_types/_form.html.haml b/app/views/spina/admin/conferences/presentation_attachment_types/_form.html.haml index 3fd104d2..928c9040 100644 --- a/app/views/spina/admin/conferences/presentation_attachment_types/_form.html.haml +++ b/app/views/spina/admin/conferences/presentation_attachment_types/_form.html.haml @@ -4,7 +4,7 @@ = form_for [:admin_conferences, @presentation_attachment_type], html: { autocomplete: 'off' } do |f| %header#header - = render partial: 'spina/admin/shared/breadcrumbs' + = render partial: @presentation_attachment_type.new_record? ? 'spina/admin/shared/breadcrumbs' : 'breadcrumbs' #header_actions %button.button.button-primary{ type: 'submit' } @@ -13,11 +13,14 @@ = link_to t('spina.cancel'), admin_conferences_presentation_attachment_types_path, class: 'button', style: 'margin-right: 0' - %div{ style: 'margin-top: 40px' } - .horizontal-form - .horizontal-form-group - .horizontal-form-label= Spina::Admin::Conferences::DietaryRequirement.human_attribute_name :name - .horizontal-form-content= f.text_field :name, placeholder: Spina::Admin::Conferences::DietaryRequirement.human_attribute_name(:name), required: true + = hidden_field_tag :locale, @locale + + - Mobility.with_locale(@locale) do + %div{ style: 'margin-top: 40px' } + .horizontal-form + .horizontal-form-group + .horizontal-form-label= Spina::Admin::Conferences::DietaryRequirement.human_attribute_name :name + .horizontal-form-content= f.text_field :name, placeholder: Spina::Admin::Conferences::DietaryRequirement.human_attribute_name(:name), required: true - unless @presentation_attachment_type.new_record? .pull-right= link_to t('spina.permanently_delete'), admin_conferences_presentation_attachment_type_path(@presentation_attachment_type), method: :delete, data: { confirm: t('.delete_confirmation', presentation_attachment_type: @presentation_attachment_type.name) }, class: %w[button button-link button-danger] diff --git a/app/views/spina/admin/conferences/presentation_types/_form.html.haml b/app/views/spina/admin/conferences/presentation_types/_form.html.haml index 26dde001..b108e041 100644 --- a/app/views/spina/admin/conferences/presentation_types/_form.html.haml +++ b/app/views/spina/admin/conferences/presentation_types/_form.html.haml @@ -4,7 +4,7 @@ = form_for [:admin_conferences, @presentation_type], html: { autocomplete: 'off' } do |f| %header#header - = render partial: 'spina/admin/shared/breadcrumbs' + = render partial: @presentation_type.new_record? ? 'spina/admin/shared/breadcrumbs' : 'breadcrumbs' #header_actions %button.button.button-primary{ type: 'submit' } @@ -19,6 +19,9 @@ %li{ class: ('active' if i == 0) } = link_to t(".#{tab}"), "##{tab}" - #presentation_type_details.tab-content.active= render 'form_presentation_type_details', f: f - #sessions.tab-content= render partial: 'sessions', object: @presentation_type.sessions - #presentations.tab-content= render partial: 'presentations', object: @presentation_type.presentations + = hidden_field_tag :locale, @locale + + - Mobility.with_locale(@locale) do + #presentation_type_details.tab-content.active= render 'form_presentation_type_details', f: f + #sessions.tab-content= render partial: 'sessions', object: @presentation_type.sessions + #presentations.tab-content= render partial: 'presentations', object: @presentation_type.presentations diff --git a/app/views/spina/admin/conferences/presentations/_form.html.haml b/app/views/spina/admin/conferences/presentations/_form.html.haml index a6fd71a8..980218dd 100644 --- a/app/views/spina/admin/conferences/presentations/_form.html.haml +++ b/app/views/spina/admin/conferences/presentations/_form.html.haml @@ -4,7 +4,7 @@ = form_for [:admin_conferences, @presentation], html: { autocomplete: 'off' } do |f| %header#header - = render partial: 'spina/admin/shared/breadcrumbs' + = render partial: @presentation.new_record? ? 'spina/admin/shared/breadcrumbs' : 'breadcrumbs' #header_actions %button.button.button-primary{ type: 'submit' } @@ -19,5 +19,8 @@ %li{ class: ('active' if i == 0) } = link_to t(".#{tab}"), "##{tab}" - #presentation_details.tab-content.active= render 'form_presentation_details', f: f - #presenters.tab-content= render partial: 'delegates', object: @presentation.presenters + = hidden_field_tag :locale, @locale + + - Mobility.with_locale(@locale) do + #presentation_details.tab-content.active= render 'form_presentation_details', f: f + #presenters.tab-content= render partial: 'delegates', object: @presentation.presenters diff --git a/app/views/spina/admin/conferences/rooms/_form.html.haml b/app/views/spina/admin/conferences/rooms/_form.html.haml index 8d1f20b9..03539896 100644 --- a/app/views/spina/admin/conferences/rooms/_form.html.haml +++ b/app/views/spina/admin/conferences/rooms/_form.html.haml @@ -4,7 +4,7 @@ = form_for [:admin_conferences, @room], html: { autocomplete: 'off' } do |f| %header#header - = render partial: 'spina/admin/shared/breadcrumbs' + = render partial: @room.new_record? ? 'spina/admin/shared/breadcrumbs' : 'breadcrumbs' #header_actions %button.button.button-primary{ type: 'submit' } @@ -19,5 +19,8 @@ %li{ class: ('active'if i == 0)} = link_to t(".#{tab}"), "##{tab}" - #room_details.tab-content.active= render 'form_room_details', f: f - #presentations.tab-content= render partial: 'presentations', object: @room.presentations + = hidden_field_tag :locale, @locale + + - Mobility.with_locale(@locale) do + #room_details.tab-content.active= render 'form_room_details', f: f + #presentations.tab-content= render partial: 'presentations', object: @room.presentations diff --git a/app/views/spina/admin/conferences/sessions/_form.html.haml b/app/views/spina/admin/conferences/sessions/_form.html.haml index 5b093ced..6d050227 100644 --- a/app/views/spina/admin/conferences/sessions/_form.html.haml +++ b/app/views/spina/admin/conferences/sessions/_form.html.haml @@ -4,7 +4,7 @@ = form_for [:admin_conferences, @session], html: { autocomplete: 'off' } do |f| %header#header - = render partial: 'spina/admin/shared/breadcrumbs' + = render partial: @session.new_record? ? 'spina/admin/shared/breadcrumbs' : 'breadcrumbs' #header_actions %button.button.button-primary{ type: 'submit' } @@ -19,5 +19,8 @@ %li{ class: ('active'if i == 0)} = link_to t(".#{tab}"), "##{tab}" - #session_details.tab-content.active= render 'form_session_details', f: f - #presentations.tab-content= render partial: 'presentations', object: @session.presentations + = hidden_field_tag :locale, @locale + + - Mobility.with_locale(@locale) do + #session_details.tab-content.active= render 'form_session_details', f: f + #presentations.tab-content= render partial: 'presentations', object: @session.presentations diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb index 4165e77b..d189cf4a 100644 --- a/test/application_system_test_case.rb +++ b/test/application_system_test_case.rb @@ -13,6 +13,16 @@ class ApplicationSystemTestCase < ActionDispatch::SystemTestCase include ::Spina::Engine.routes.url_helpers driven_by :selenium, using: :headless_chrome, screen_size: [1400, 800] + + setup do + @user = spina_users :joe + visit admin_login_path + within '.login-fields' do + fill_in 'email', with: @user.email + fill_in 'password', with: 'password' + end + click_on 'Login' + end end Capybara.default_max_wait_time = 5 diff --git a/test/controllers/spina/admin/conferences/conferences_controller_test.rb b/test/controllers/spina/admin/conferences/conferences_controller_test.rb index 48f3c5fb..2001bdc3 100644 --- a/test/controllers/spina/admin/conferences/conferences_controller_test.rb +++ b/test/controllers/spina/admin/conferences/conferences_controller_test.rb @@ -10,11 +10,9 @@ class ConferencesControllerTest < ActionDispatch::IntegrationTest # rubocop:disa setup do @conference = spina_admin_conferences_conferences :university_of_atlantis_2017 - @invalid_conference = Conference.new @empty_conference = spina_admin_conferences_conferences :empty_conference @user = spina_users :joe @rovinj_image = spina_images(:rovinj) - @logo = spina_images(:logo) post admin_sessions_url, params: { email: @user.email, password: 'password' } end @@ -57,94 +55,115 @@ class ConferencesControllerTest < ActionDispatch::IntegrationTest # rubocop:disa end end + test 'should get edit in locale' do + get edit_admin_conferences_conference_url(@conference, locale: :en) + assert_response :success + assert_select('#delegates tbody > tr') do |table_rows| + table_rows.each { |row| assert_select row, 'td', 4 } + end + assert_select '#presentation_types tbody > tr' do |table_rows| + table_rows.each { |row| assert_select row, 'td', 4 } + end + assert_select '#presentations tbody > tr' do |table_rows| + table_rows.each { |row| assert_select row, 'td', 4 } + end + assert_select('#rooms tbody > tr') do |table_rows| + table_rows.each { |row| assert_select row, 'td', 4 } + end + end + test 'should create conference' do - attributes = @conference.attributes - attributes[:start_date] = @conference.start_date - attributes[:finish_date] = @conference.finish_date - attributes[:name] = @conference.name assert_difference 'Conference.count' do - post admin_conferences_conferences_url, params: { conference: attributes } + post admin_conferences_conferences_url, + params: { conference: { start_date: Date.parse('2022-04-09'), finish_date: Date.parse('2022-04-11'), name: 'NSA 2022' } } end assert_redirected_to admin_conferences_conferences_url assert_equal 'Conference saved', flash[:success] + assert_not_nil Conference.i18n.find_by(dates: Date.parse('2022-04-09')..Date.parse('2022-04-11'), name: 'NSA 2022') end test 'should create conference with remote form' do - attributes = @conference.attributes - attributes[:start_date] = @conference.start_date - attributes[:finish_date] = @conference.finish_date - attributes[:name] = @conference.name assert_difference 'Conference.count' do - post admin_conferences_conferences_url, params: { conference: attributes }, as: :turbo_stream + post admin_conferences_conferences_url, + params: { conference: { start_date: Date.parse('2022-04-09'), finish_date: Date.parse('2022-04-11'), name: 'NSA 2022' } }, + as: :turbo_stream end assert_redirected_to admin_conferences_conferences_url assert_equal 'Conference saved', flash[:success] + assert_not_nil Conference.i18n.find_by(dates: Date.parse('2022-04-09')..Date.parse('2022-04-11'), name: 'NSA 2022') end test 'should fail to create invalid conference' do - attributes = @invalid_conference.attributes - attributes[:start_date] = @invalid_conference.start_date - attributes[:finish_date] = @invalid_conference.finish_date - attributes[:name] = @invalid_conference.name assert_no_difference 'Conference.count' do - post admin_conferences_conferences_url, params: { conference: attributes } + post admin_conferences_conferences_url, params: { conference: { start_date: nil, finish_date: nil, name: nil } } end assert_response :success assert_not_equal 'Conference saved', flash[:success] end test 'should fail to create invalid conference with remote form' do - attributes = @invalid_conference.attributes - attributes[:start_date] = @invalid_conference.start_date - attributes[:finish_date] = @invalid_conference.finish_date - attributes[:name] = @invalid_conference.name assert_no_difference 'Conference.count' do - post admin_conferences_conferences_url, params: { conference: attributes }, as: :turbo_stream + post admin_conferences_conferences_url, + params: { conference: { start_date: nil, finish_date: nil, name: nil } }, + as: :turbo_stream end assert_response :success assert_not_equal 'Conference saved', flash[:success] end test 'should update conference' do - attributes = @conference.attributes - attributes[:start_date] = @conference.start_date - attributes[:finish_date] = @conference.finish_date - attributes[:name] = @conference.name - patch admin_conferences_conference_url(@conference), params: { conference: attributes } + patch admin_conferences_conference_url(@conference), + params: { conference: { start_date: Date.parse('2022-04-09'), finish_date: Date.parse('2022-04-11'), name: 'NSA 2022' } } assert_redirected_to admin_conferences_conferences_url assert_equal 'Conference saved', flash[:success] + assert_not_nil Conference.i18n.find_by(id: @conference.id, + dates: Date.parse('2022-04-09')..Date.parse('2022-04-11'), + name: 'NSA 2022') end test 'should update conference with remote form' do - attributes = @conference.attributes - attributes[:start_date] = @conference.start_date - attributes[:finish_date] = @conference.finish_date - attributes[:name] = @conference.name - patch admin_conferences_conference_url(@conference), params: { conference: attributes }, as: :turbo_stream + patch admin_conferences_conference_url(@conference), + params: { conference: { start_date: Date.parse('2022-04-09'), finish_date: Date.parse('2022-04-11'), name: 'NSA 2022' } }, + as: :turbo_stream assert_redirected_to admin_conferences_conferences_url assert_equal 'Conference saved', flash[:success] + assert_not_nil Conference.i18n.find_by(id: @conference.id, + dates: Date.parse('2022-04-09')..Date.parse('2022-04-11'), + name: 'NSA 2022') end test 'should fail to update invalid conference' do - attributes = @invalid_conference.attributes - attributes[:start_date] = @invalid_conference.start_date - attributes[:finish_date] = @invalid_conference.finish_date - attributes[:name] = @invalid_conference.name - patch admin_conferences_conference_url(@conference), params: { conference: attributes } + patch admin_conferences_conference_url(@conference), params: { conference: { start_date: nil, finish_date: nil, name: nil } } assert_response :success assert_not_equal 'Conference saved', flash[:success] end test 'should fail to update invalid conference with remote form' do - attributes = @invalid_conference.attributes - attributes[:start_date] = @invalid_conference.start_date - attributes[:finish_date] = @invalid_conference.finish_date - attributes[:name] = @invalid_conference.name - patch admin_conferences_conference_url(@conference), params: { conference: attributes }, as: :turbo_stream + patch admin_conferences_conference_url(@conference), + params: { conference: { start_date: nil, finish_date: nil, name: nil } }, + as: :turbo_stream assert_response :success assert_not_equal 'Conference saved', flash[:success] end + test 'should update conference in locale' do + assert_changes -> { @conference.reload.name(locale: :en) }, to: 'MALT' do + patch admin_conferences_conference_url(@conference), params: { conference: { name: 'MALT' }, locale: :en } + assert_redirected_to admin_conferences_conferences_url + assert_equal 'Conference saved', flash[:success] + end + assert_not_equal 'MALT', @conference.reload.name + end + + test 'should update conference in locale with remote form' do + assert_changes -> { @conference.reload.name(locale: :en) }, to: 'MALT' do + patch admin_conferences_conference_url(@conference), params: { conference: { name: 'MALT' }, locale: :en }, as: :turbo_stream + assert_redirected_to admin_conferences_conferences_url + assert_equal 'Conference saved', flash[:success] + end + assert_not_equal 'MALT', @conference.reload.name + end + test 'should destroy conference' do assert_difference 'Conference.count', -1 do delete admin_conferences_conference_url(@empty_conference) @@ -178,51 +197,89 @@ class ConferencesControllerTest < ActionDispatch::IntegrationTest # rubocop:disa end test 'should save generic part' do - attributes = @conference.attributes - attributes[:start_date] = @conference.start_date - attributes[:finish_date] = @conference.finish_date - attributes[:name] = @conference.name - attributes[:'en-GB_content_attributes'] = [ - { title: 'Submission text', name: 'submission_text', content: 'Dolor sit amen', type: 'Spina::Parts::Line' } - ] - assert_changes -> { @conference.reload.content(:submission_text) }, from: 'Lorem ipsum', to: 'Dolor sit amen' do - patch admin_conferences_conference_url(@conference), params: { conference: attributes } + assert_changes -> { @conference.reload.content(:submission_text) }, to: 'Dolor sit amen' do + patch admin_conferences_conference_url(@conference), + params: { conference: { + 'en-GB_content_attributes': [ + { title: 'Submission text', name: 'submission_text', content: 'Dolor sit amen', type: 'Spina::Parts::Line' } + ] + } } + end + end + + test 'should save generic part with remote form' do + assert_changes -> { @conference.reload.content(:submission_text) }, to: 'Dolor sit amen' do + patch admin_conferences_conference_url(@conference), + as: :turbo_stream, + params: { conference: { + 'en-GB_content_attributes': [ + { title: 'Submission text', name: 'submission_text', content: 'Dolor sit amen', type: 'Spina::Parts::Line' } + ] + } } end end test 'should save generic structure part' do - attributes = @conference.attributes - attributes[:start_date] = @conference.start_date - attributes[:finish_date] = @conference.finish_date - attributes[:name] = @conference.name - attributes[:'en-GB_content_attributes'] = [ - { title: 'Sponsors', name: 'sponsors', type: 'Spina::Parts::Repeater', content_attributes: [ - { title: 'Sponsors', name: 'sponsors', parts_attributes: [ - { title: 'Name', name: 'name', content: 'Another sponsor', type: 'Spina::Parts::Line' } - ] } - ] } - ] - assert_changes -> { @conference.reload.content(:sponsors).first.content('name') }, from: 'Some sponsor', to: 'Another sponsor' do - patch admin_conferences_conference_url(@conference), params: { conference: attributes }, as: :turbo_stream + assert_changes -> { @conference.reload.content(:sponsors).first.content('name') }, to: 'Another sponsor' do + patch admin_conferences_conference_url(@conference), + params: { conference: { + 'en-GB_content_attributes': [ + { title: 'Sponsors', name: 'sponsors', type: 'Spina::Parts::Repeater', content_attributes: [ + { title: 'Sponsors', name: 'sponsors', parts_attributes: [ + { title: 'Name', name: 'name', content: 'Another sponsor', type: 'Spina::Parts::Line' } + ] } + ] } + ] + } } + end + end + + test 'should save generic structure part with remote form' do + assert_changes -> { @conference.reload.content(:sponsors).first.content('name') }, to: 'Another sponsor' do + patch admin_conferences_conference_url(@conference), + as: :turbo_stream, + params: { conference: { + 'en-GB_content_attributes': [ + { title: 'Sponsors', name: 'sponsors', type: 'Spina::Parts::Repeater', content_attributes: [ + { title: 'Sponsors', name: 'sponsors', parts_attributes: [ + { title: 'Name', name: 'name', content: 'Another sponsor', type: 'Spina::Parts::Line' } + ] } + ] } + ] + } } end end test 'should save structure part image' do - attributes = @conference.attributes - attributes[:start_date] = @conference.start_date - attributes[:finish_date] = @conference.finish_date - attributes[:name] = @conference.name - attributes[:'en-GB_content_attributes'] = [ - { title: 'Sponsors', name: 'sponsors', type: 'Spina::Parts::Repeater', content_attributes: [ - { title: 'Sponsors', name: 'sponsors', parts_attributes: [ - { title: 'Logo', name: 'logo', type: 'Spina::Parts::Image', image_id: @rovinj_image.id, filename: 'logo.jpeg', - signed_blob_id: '', alt: 'Logo' } - ] } - ] } - ] - assert_changes -> { @conference.reload.content(:sponsors).first.content(:logo).spina_image }, - from: @logo, to: @rovinj_image do - patch admin_conferences_conference_url(@conference), params: { conference: attributes }, as: :turbo_stream + assert_changes -> { @conference.reload.content(:sponsors).first.content(:logo).spina_image }, to: @rovinj_image do + patch admin_conferences_conference_url(@conference), + params: { conference: { + 'en-GB_content_attributes': [ + { title: 'Sponsors', name: 'sponsors', type: 'Spina::Parts::Repeater', content_attributes: [ + { title: 'Sponsors', name: 'sponsors', parts_attributes: [ + { title: 'Logo', name: 'logo', type: 'Spina::Parts::Image', image_id: @rovinj_image.id, filename: 'logo.jpeg', + signed_blob_id: '', alt: 'Logo' } + ] } + ] } + ] + } } + end + end + + test 'should save structure part image with remote form' do + assert_changes -> { @conference.reload.content(:sponsors).first.content(:logo).spina_image }, to: @rovinj_image do + patch admin_conferences_conference_url(@conference), + as: :turbo_stream, + params: { conference: { + 'en-GB_content_attributes': [ + { title: 'Sponsors', name: 'sponsors', type: 'Spina::Parts::Repeater', content_attributes: [ + { title: 'Sponsors', name: 'sponsors', parts_attributes: [ + { title: 'Logo', name: 'logo', type: 'Spina::Parts::Image', image_id: @rovinj_image.id, filename: 'logo.jpeg', + signed_blob_id: '', alt: 'Logo' } + ] } + ] } + ] + } } end end diff --git a/test/controllers/spina/admin/conferences/delegates_controller_test.rb b/test/controllers/spina/admin/conferences/delegates_controller_test.rb index 8649f39f..2cff0951 100644 --- a/test/controllers/spina/admin/conferences/delegates_controller_test.rb +++ b/test/controllers/spina/admin/conferences/delegates_controller_test.rb @@ -10,7 +10,6 @@ class DelegatesControllerTest < ActionDispatch::IntegrationTest # rubocop:disabl setup do @delegate = spina_admin_conferences_delegates :joe_bloggs - @invalid_delegate = Delegate.new @user = spina_users :joe post admin_sessions_url, params: { email: @user.email, password: 'password' } end @@ -42,79 +41,181 @@ class DelegatesControllerTest < ActionDispatch::IntegrationTest # rubocop:disabl end end + test 'should get edit in locale' do + get edit_admin_conferences_delegate_url(@delegate, locale: :en) + assert_response :success + assert_select '#conferences tbody > tr' do |table_rows| + table_rows.each { |row| assert_select row, 'td', 5 } + end + assert_select '#presentations tbody > tr' do |table_rows| + table_rows.each { |row| assert_select row, 'td', 4 } + end + end + test 'should create delegate' do - attributes = @delegate.attributes - attributes[:conference_ids] = @delegate.conference_ids assert_difference 'Delegate.count' do - post admin_conferences_delegates_url, params: { delegate: attributes } + post admin_conferences_delegates_url, + params: { delegate: { first_name: 'Mo', + last_name: 'Boggs', + institution_id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + email_address: 'noone@noaddress.com', + url: 'https://www.boggs.com', + conference_ids: [ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018)], + dietary_requirement_ids: [ActiveRecord::FixtureSet.identify(:pescetarian)] } } end assert_redirected_to admin_conferences_delegates_url assert_equal 'Delegate saved', flash[:success] + assert_not_nil Delegate.joins(:conferences, :dietary_requirements) + .find_by(first_name: 'Mo', + last_name: 'Boggs', + institution: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + email_address: 'noone@noaddress.com', + url: 'https://www.boggs.com', + conferences: { id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018) }, + dietary_requirements: { id: ActiveRecord::FixtureSet.identify(:pescetarian) }) end test 'should create delegate with remote form' do - attributes = @delegate.attributes - attributes[:conference_ids] = @delegate.conference_ids assert_difference 'Delegate.count' do - post admin_conferences_delegates_url, params: { delegate: attributes }, as: :turbo_stream + post admin_conferences_delegates_url, + params: { delegate: { first_name: 'Mo', + last_name: 'Boggs', + institution_id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + email_address: 'noone@noaddress.com', + url: 'https://www.boggs.com', + conference_ids: [ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018)], + dietary_requirement_ids: [ActiveRecord::FixtureSet.identify(:pescetarian)] } }, + as: :turbo_stream end assert_redirected_to admin_conferences_delegates_url assert_equal 'Delegate saved', flash[:success] + assert_not_nil Delegate.joins(:conferences, :dietary_requirements) + .find_by(first_name: 'Mo', + last_name: 'Boggs', + institution: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + email_address: 'noone@noaddress.com', + url: 'https://www.boggs.com', + conferences: { id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018) }, + dietary_requirements: { id: ActiveRecord::FixtureSet.identify(:pescetarian) }) end test 'should fail to create invalid delegate' do - attributes = @invalid_delegate.attributes - attributes[:conference_ids] = @invalid_delegate.conference_ids assert_no_difference 'Delegate.count' do - post admin_conferences_delegates_url, params: { delegate: attributes } + post admin_conferences_delegates_url, + params: { delegate: { first_name: nil, + last_name: nil, + institution_id: nil, + email_address: nil, + url: nil, + conference_ids: [], + dietary_requirement_ids: [] } } end assert_response :success assert_not_equal 'Delegate saved', flash[:success] end test 'should fail to create invalid delegate with remote form' do - attributes = @invalid_delegate.attributes - attributes[:conference_ids] = @invalid_delegate.conference_ids assert_no_difference 'Delegate.count' do - post admin_conferences_delegates_url, params: { delegate: attributes }, as: :turbo_stream + post admin_conferences_delegates_url, + params: { delegate: { first_name: nil, + last_name: nil, + institution_id: nil, + email_address: nil, + url: nil, + conference_ids: [], + dietary_requirement_ids: [] } }, + as: :turbo_stream end assert_response :success assert_not_equal 'Delegate saved', flash[:success] end test 'should update delegate' do - attributes = @delegate.attributes - attributes[:conference_ids] = @delegate.conference_ids - patch admin_conferences_delegate_url(@delegate), params: { delegate: attributes } + patch admin_conferences_delegate_url(@delegate), + params: { delegate: { first_name: 'Mo', + last_name: 'Boggs', + institution_id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + email_address: 'noone@noaddress.com', + url: 'https://www.boggs.com', + conference_ids: [ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018)], + dietary_requirement_ids: [ActiveRecord::FixtureSet.identify(:pescetarian)] } } assert_redirected_to admin_conferences_delegates_url assert_equal 'Delegate saved', flash[:success] + assert_not_nil Delegate.joins(:conferences, :dietary_requirements) + .find_by(id: @delegate.id, + first_name: 'Mo', + last_name: 'Boggs', + institution: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + email_address: 'noone@noaddress.com', + url: 'https://www.boggs.com', + conferences: { id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018) }, + dietary_requirements: { id: ActiveRecord::FixtureSet.identify(:pescetarian) }) end test 'should update delegate with remote form' do - attributes = @delegate.attributes - attributes[:conference_ids] = @delegate.conference_ids - patch admin_conferences_delegate_url(@delegate), params: { delegate: attributes }, - as: :turbo_stream + patch admin_conferences_delegate_url(@delegate), + params: { delegate: { first_name: 'Mo', + last_name: 'Boggs', + institution_id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + email_address: 'noone@noaddress.com', + url: 'https://www.boggs.com', + conference_ids: [ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018)], + dietary_requirement_ids: [ActiveRecord::FixtureSet.identify(:pescetarian)] } }, + as: :turbo_stream assert_redirected_to admin_conferences_delegates_url assert_equal 'Delegate saved', flash[:success] + assert_not_nil Delegate.joins(:conferences, :dietary_requirements) + .find_by(id: @delegate.id, + first_name: 'Mo', + last_name: 'Boggs', + institution: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + email_address: 'noone@noaddress.com', + url: 'https://www.boggs.com', + conferences: { id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018) }, + dietary_requirements: { id: ActiveRecord::FixtureSet.identify(:pescetarian) }) end test 'should fail to update invalid delegate' do - attributes = @invalid_delegate.attributes - attributes[:conference_ids] = @invalid_delegate.conference_ids - patch admin_conferences_delegate_url(@delegate), params: { delegate: attributes } + patch admin_conferences_delegate_url(@delegate), + params: { delegate: { first_name: nil, + last_name: nil, + institution_id: nil, + email_address: nil, + url: nil, + conference_ids: [], + dietary_requirement_ids: [] } } assert_response :success assert_not_equal 'Delegate saved', flash[:success] end test 'should fail to update invalid delegate with remote form' do - attributes = @invalid_delegate.attributes - attributes[:conference_ids] = @invalid_delegate.conference_ids - patch admin_conferences_delegate_url(@delegate), params: { delegate: attributes }, as: :turbo_stream + patch admin_conferences_delegate_url(@delegate), + params: { delegate: { first_name: nil, + last_name: nil, + institution_id: nil, + email_address: nil, + url: nil, + conference_ids: [], + dietary_requirement_ids: [] } }, + as: :turbo_stream assert_response :success assert_not_equal 'Delegate saved', flash[:success] end + test 'should update delegate in locale' do + patch admin_conferences_delegate_url(@delegate), + params: { delegate: @delegate.attributes.merge(conference_ids: @delegate.conference_ids), locale: :en } + assert_redirected_to admin_conferences_delegates_url + assert_equal 'Delegate saved', flash[:success] + end + + test 'should update delegate in locale with remote form' do + patch admin_conferences_delegate_url(@delegate), + params: { delegate: @delegate.attributes.merge(conference_ids: @delegate.conference_ids), locale: :en }, as: :turbo_stream + assert_redirected_to admin_conferences_delegates_url + assert_equal 'Delegate saved', flash[:success] + end + test 'should destroy delegate' do assert_difference 'Delegate.count', -1 do delete admin_conferences_delegate_url(@delegate) diff --git a/test/controllers/spina/admin/conferences/dietary_requirements_controller_test.rb b/test/controllers/spina/admin/conferences/dietary_requirements_controller_test.rb index ad77e506..a7e454b0 100644 --- a/test/controllers/spina/admin/conferences/dietary_requirements_controller_test.rb +++ b/test/controllers/spina/admin/conferences/dietary_requirements_controller_test.rb @@ -11,7 +11,6 @@ class DietaryRequirementsControllerTest < ActionDispatch::IntegrationTest # rubo setup do @dietary_requirement = spina_admin_conferences_dietary_requirements :pescetarian - @invalid_dietary_requirement = DietaryRequirement.new @user = spina_users :joe post admin_sessions_url, params: { email: @user.email, password: 'password' } end @@ -37,82 +36,96 @@ class DietaryRequirementsControllerTest < ActionDispatch::IntegrationTest # rubo end end + test 'should get edit in locale' do + get edit_admin_conferences_dietary_requirement_url(@dietary_requirement, locale: :en) + assert_response :success + assert_select('#delegates tbody > tr') do |table_rows| + table_rows.each { |row| assert_select row, 'td', 4 } + end + end + test 'should create dietary requirement' do - attributes = @dietary_requirement.attributes - attributes[:name] = @dietary_requirement.name assert_difference 'DietaryRequirement.count' do - post admin_conferences_dietary_requirements_url, params: { dietary_requirement: attributes } + post admin_conferences_dietary_requirements_url, params: { dietary_requirement: { name: 'Carnivore' } } end assert_redirected_to admin_conferences_dietary_requirements_url assert_equal 'Dietary requirement saved', flash[:success] + assert_not_nil DietaryRequirement.i18n.find_by(name: 'Carnivore') end test 'should create dietary requirement with remote form' do - attributes = @dietary_requirement.attributes - attributes[:name] = @dietary_requirement.name assert_difference 'DietaryRequirement.count' do - post admin_conferences_dietary_requirements_url, params: { dietary_requirement: attributes }, as: :turbo_stream + post admin_conferences_dietary_requirements_url, params: { dietary_requirement: { name: 'Carnivore' } }, as: :turbo_stream end assert_redirected_to admin_conferences_dietary_requirements_url assert_equal 'Dietary requirement saved', flash[:success] + assert_not_nil DietaryRequirement.i18n.find_by(name: 'Carnivore') end test 'should fail to create invalid dietary requirement' do - attributes = @invalid_dietary_requirement.attributes - attributes[:name] = @invalid_dietary_requirement.name assert_no_difference 'DietaryRequirement.count' do - post admin_conferences_dietary_requirements_url, params: { dietary_requirement: attributes } + post admin_conferences_dietary_requirements_url, params: { dietary_requirement: { name: nil } } end assert_response :success assert_not_equal 'Dietary requirement saved', flash[:success] end test 'should fail to create invalid dietary requirement with remote form' do - attributes = @invalid_dietary_requirement.attributes - attributes[:name] = @invalid_dietary_requirement.name assert_no_difference 'DietaryRequirement.count' do - post admin_conferences_dietary_requirements_url, params: { dietary_requirement: attributes }, as: :turbo_stream + post admin_conferences_dietary_requirements_url, params: { dietary_requirement: { name: nil } }, as: :turbo_stream end assert_response :success assert_not_equal 'Dietary requirement saved', flash[:success] end test 'should update dietary requirement' do - attributes = @dietary_requirement.attributes - attributes[:name] = @dietary_requirement.name - patch admin_conferences_dietary_requirement_url(@dietary_requirement), - params: { dietary_requirement: attributes } + patch admin_conferences_dietary_requirement_url(@dietary_requirement), params: { dietary_requirement: { name: 'Carnivore' } } assert_redirected_to admin_conferences_dietary_requirements_url assert_equal 'Dietary requirement saved', flash[:success] + assert_not_nil DietaryRequirement.i18n.find_by(id: @dietary_requirement.id, name: 'Carnivore') end test 'should update dietary requirement with remote form' do - attributes = @dietary_requirement.attributes - attributes[:name] = @dietary_requirement.name patch admin_conferences_dietary_requirement_url(@dietary_requirement), - params: { dietary_requirement: attributes }, as: :turbo_stream + params: { dietary_requirement: { name: 'Carnivore' } }, as: :turbo_stream assert_redirected_to admin_conferences_dietary_requirements_url assert_equal 'Dietary requirement saved', flash[:success] + assert_not_nil DietaryRequirement.i18n.find_by(id: @dietary_requirement.id, name: 'Carnivore') end test 'should fail to update invalid dietary requirement' do - attributes = @invalid_dietary_requirement.attributes - attributes[:name] = @invalid_dietary_requirement.name - patch admin_conferences_dietary_requirement_url(@dietary_requirement), - params: { dietary_requirement: attributes } + patch admin_conferences_dietary_requirement_url(@dietary_requirement), params: { dietary_requirement: { name: nil } } assert_response :success assert_not_equal 'Dietary requirement saved', flash[:success] end test 'should fail to update invalid dietary requirement with remote form' do - attributes = @invalid_dietary_requirement.attributes - attributes[:name] = @invalid_dietary_requirement.name patch admin_conferences_dietary_requirement_url(@dietary_requirement), - params: { dietary_requirement: attributes }, as: :turbo_stream + params: { dietary_requirement: { name: nil } }, as: :turbo_stream assert_response :success assert_not_equal 'Dietary requirement saved', flash[:success] end + test 'should update dietary requirement in locale' do + assert_changes -> { @dietary_requirement.reload.name(locale: :en) }, to: 'Pescatarian' do + patch admin_conferences_dietary_requirement_url(@dietary_requirement), + params: { dietary_requirement: { name: 'Pescatarian' }, locale: :en } + assert_redirected_to admin_conferences_dietary_requirements_url + assert_equal 'Dietary requirement saved', flash[:success] + end + assert_not_equal 'Pescatarian', @dietary_requirement.reload.name + end + + test 'should update dietary requirement in locale with remote form' do + assert_changes -> { @dietary_requirement.reload.name(locale: :en) }, to: 'Pescatarian' do + patch admin_conferences_dietary_requirement_url(@dietary_requirement), + params: { dietary_requirement: { name: 'Pescatarian' }, locale: :en }, as: :turbo_stream + assert_redirected_to admin_conferences_dietary_requirements_url + assert_equal 'Dietary requirement saved', flash[:success] + end + assert_not_equal 'Pescatarian', @dietary_requirement.reload.name + end + test 'should destroy dietary requirement' do assert_difference 'DietaryRequirement.count', -1 do delete admin_conferences_dietary_requirement_url(@dietary_requirement) diff --git a/test/controllers/spina/admin/conferences/institutions_controller_test.rb b/test/controllers/spina/admin/conferences/institutions_controller_test.rb index 18817a76..2c5dafd3 100644 --- a/test/controllers/spina/admin/conferences/institutions_controller_test.rb +++ b/test/controllers/spina/admin/conferences/institutions_controller_test.rb @@ -10,7 +10,6 @@ class InstitutionsControllerTest < ActionDispatch::IntegrationTest # rubocop:dis setup do @institution = spina_admin_conferences_institutions :university_of_atlantis - @invalid_institution = Institution.new @empty_institution = spina_admin_conferences_institutions :empty_institution @user = spina_users :joe post admin_sessions_url, params: { email: @user.email, password: 'password' } @@ -43,86 +42,122 @@ class InstitutionsControllerTest < ActionDispatch::IntegrationTest # rubocop:dis end end + test 'should get edit in locale' do + get edit_admin_conferences_institution_url(@institution, locale: :en) + assert_response :success + assert_select('#delegates tbody > tr') do |table_rows| + table_rows.each { |row| assert_select row, 'td', 4 } + end + assert_select('#rooms tbody > tr') do |table_rows| + table_rows.each { |row| assert_select row, 'td', 4 } + end + end + test 'should create institution' do - attributes = @institution.attributes - attributes[:name] = @institution.name - attributes[:city] = @institution.city assert_difference 'Institution.count' do - post admin_conferences_institutions_url, params: { institution: attributes } + post admin_conferences_institutions_url, + params: { institution: { logo_id: ActiveRecord::FixtureSet.identify(:dubrovnik), + name: 'University of Dubrovnik', + city: 'Dubrovnik' } } end assert_redirected_to admin_conferences_institutions_url assert_equal 'Institution saved', flash[:success] + assert_not_nil Institution.i18n.find_by(logo: ActiveRecord::FixtureSet.identify(:dubrovnik), + name: 'University of Dubrovnik', + city: 'Dubrovnik') end test 'should create institution with remote form' do - attributes = @institution.attributes - attributes[:name] = @institution.name - attributes[:city] = @institution.city assert_difference 'Institution.count' do - post admin_conferences_institutions_url, params: { institution: attributes }, as: :turbo_stream + post admin_conferences_institutions_url, + params: { institution: { logo_id: ActiveRecord::FixtureSet.identify(:dubrovnik), + name: 'University of Dubrovnik', + city: 'Dubrovnik' } }, + as: :turbo_stream end assert_redirected_to admin_conferences_institutions_url assert_equal 'Institution saved', flash[:success] + assert_not_nil Institution.i18n.find_by(logo: ActiveRecord::FixtureSet.identify(:dubrovnik), + name: 'University of Dubrovnik', + city: 'Dubrovnik') end test 'should fail to create invalid institution' do - attributes = @invalid_institution.attributes - attributes[:name] = @invalid_institution.name - attributes[:city] = @invalid_institution.city assert_no_difference 'Institution.count' do - post admin_conferences_institutions_url, params: { institution: attributes } + post admin_conferences_institutions_url, params: { institution: { logo_id: nil, name: nil, city: nil } } end assert_response :success assert_not_equal 'Institution saved', flash[:success] end test 'should fail to create invalid institution with remote form' do - attributes = @invalid_institution.attributes - attributes[:name] = @invalid_institution.name - attributes[:city] = @invalid_institution.city assert_no_difference 'Institution.count' do - post admin_conferences_institutions_url, params: { institution: attributes }, as: :turbo_stream + post admin_conferences_institutions_url, params: { institution: { logo_id: nil, name: nil, city: nil } }, as: :turbo_stream end assert_response :success assert_not_equal 'Institution saved', flash[:success] end test 'should update institution' do - attributes = @institution.attributes - attributes[:name] = @institution.name - attributes[:city] = @institution.city - patch admin_conferences_institution_url(@institution), params: { institution: attributes } + patch admin_conferences_institution_url(@institution), + params: { institution: { logo_id: ActiveRecord::FixtureSet.identify(:dubrovnik), + name: 'University of Dubrovnik', + city: 'Dubrovnik' } } assert_redirected_to admin_conferences_institutions_url assert_equal 'Institution saved', flash[:success] + assert_not_nil Institution.i18n.find_by(id: @institution.id, + logo: ActiveRecord::FixtureSet.identify(:dubrovnik), + name: 'University of Dubrovnik', + city: 'Dubrovnik') end test 'should update institution with remote form' do - attributes = @institution.attributes - attributes[:name] = @institution.name - attributes[:city] = @institution.city - patch admin_conferences_institution_url(@institution), params: { institution: attributes }, as: :turbo_stream + patch admin_conferences_institution_url(@institution), + params: { institution: { logo_id: ActiveRecord::FixtureSet.identify(:dubrovnik), + name: 'University of Dubrovnik', + city: 'Dubrovnik' } }, + as: :turbo_stream assert_redirected_to admin_conferences_institutions_url assert_equal 'Institution saved', flash[:success] + assert_not_nil Institution.i18n.find_by(id: @institution.id, + logo: ActiveRecord::FixtureSet.identify(:dubrovnik), + name: 'University of Dubrovnik', + city: 'Dubrovnik') end test 'should fail to update invalid institution' do - attributes = @invalid_institution.attributes - attributes[:name] = @invalid_institution.name - attributes[:city] = @invalid_institution.city - patch admin_conferences_institution_url(@institution), params: { institution: attributes } + patch admin_conferences_institution_url(@institution), params: { institution: { logo_id: nil, name: nil, city: nil } } assert_response :success assert_not_equal 'Institution saved', flash[:success] end test 'should fail to update invalid institution with remote form' do - attributes = @invalid_institution.attributes - attributes[:name] = @invalid_institution.name - attributes[:city] = @invalid_institution.city - patch admin_conferences_institution_url(@institution), params: { institution: attributes }, as: :turbo_stream + patch admin_conferences_institution_url(@institution), + params: { institution: { logo_id: nil, name: nil, city: nil } }, + as: :turbo_stream assert_response :success assert_not_equal 'Institution saved', flash[:success] end + test 'should update institution in locale' do + assert_changes -> { @institution.reload.name(locale: :en) }, to: 'Atlantis University' do + patch admin_conferences_institution_url(@institution), params: { institution: { name: 'Atlantis University' }, locale: :en } + assert_redirected_to admin_conferences_institutions_url + assert_equal 'Institution saved', flash[:success] + end + assert_not_equal 'Atlantis University', @institution.reload.name + end + + test 'should update institution in locale with remote form' do + assert_changes -> { @institution.reload.name(locale: :en) }, to: 'Atlantis University' do + patch admin_conferences_institution_url(@institution), + params: { institution: { name: 'Atlantis University' }, locale: :en }, as: :turbo_stream + assert_redirected_to admin_conferences_institutions_url + assert_equal 'Institution saved', flash[:success] + end + assert_not_equal 'Atlantis University', @institution.reload.name + end + test 'should destroy institution' do assert_difference 'Institution.count', -1 do delete admin_conferences_institution_url(@empty_institution) diff --git a/test/controllers/spina/admin/conferences/presentation_attachment_types_controller_test.rb b/test/controllers/spina/admin/conferences/presentation_attachment_types_controller_test.rb index 40dda5e5..9e76e6c5 100644 --- a/test/controllers/spina/admin/conferences/presentation_attachment_types_controller_test.rb +++ b/test/controllers/spina/admin/conferences/presentation_attachment_types_controller_test.rb @@ -11,7 +11,6 @@ class PresentationAttachmentTypesControllerTest < ActionDispatch::IntegrationTes setup do @presentation_attachment_type = spina_admin_conferences_presentation_attachment_types :slides - @invalid_presentation_attachment_type = PresentationAttachmentType.new @user = spina_users :joe post admin_sessions_url, params: { email: @user.email, password: 'password' } end @@ -31,84 +30,97 @@ class PresentationAttachmentTypesControllerTest < ActionDispatch::IntegrationTes assert_response :success end + test 'should get edit in locale' do + get edit_admin_conferences_presentation_attachment_type_url(@presentation_attachment_type, locale: :en) + assert_response :success + end + test 'should create presentation attachment type' do - attributes = @presentation_attachment_type.attributes - attributes[:name] = @presentation_attachment_type.name assert_difference 'PresentationAttachmentType.count' do - post admin_conferences_presentation_attachment_types_url, params: { presentation_attachment_type: attributes } + post admin_conferences_presentation_attachment_types_url, params: { presentation_attachment_type: { name: 'Appendices' } } end assert_redirected_to admin_conferences_presentation_attachment_types_url assert_equal 'Presentation attachment type saved', flash[:success] + assert_not_nil PresentationAttachmentType.i18n.find_by(name: 'Appendices') end test 'should create presentation attachment type with remote form' do - attributes = @presentation_attachment_type.attributes - attributes[:name] = @presentation_attachment_type.name assert_difference 'PresentationAttachmentType.count' do post admin_conferences_presentation_attachment_types_url, - params: { presentation_attachment_type: attributes }, as: :turbo_stream + params: { presentation_attachment_type: { name: 'Appendices' } }, as: :turbo_stream end assert_redirected_to admin_conferences_presentation_attachment_types_url assert_equal 'Presentation attachment type saved', flash[:success] + assert_not_nil PresentationAttachmentType.i18n.find_by(name: 'Appendices') end test 'should fail to create invalid presentation attachment type' do - attributes = @invalid_presentation_attachment_type.attributes - attributes[:name] = @invalid_presentation_attachment_type.name assert_no_difference 'PresentationAttachmentType.count' do - post admin_conferences_presentation_attachment_types_url, params: { presentation_attachment_type: attributes } + post admin_conferences_presentation_attachment_types_url, params: { presentation_attachment_type: { name: nil } } end assert_response :success assert_not_equal 'Presentation attachment type saved', flash[:success] end test 'should fail to create invalid presentation attachment type with remote form' do - attributes = @invalid_presentation_attachment_type.attributes - attributes[:name] = @invalid_presentation_attachment_type.name assert_no_difference 'PresentationAttachmentType.count' do post admin_conferences_presentation_attachment_types_url, - params: { presentation_attachment_type: attributes }, as: :turbo_stream + params: { presentation_attachment_type: { name: nil } }, as: :turbo_stream end assert_response :success assert_not_equal 'Presentation attachment type saved', flash[:success] end test 'should update presentation attachment type' do - attributes = @presentation_attachment_type.attributes - attributes[:name] = @presentation_attachment_type.name patch admin_conferences_presentation_attachment_type_url(@presentation_attachment_type), - params: { presentation_attachment_type: attributes } + params: { presentation_attachment_type: { name: 'Appendices' } } assert_redirected_to admin_conferences_presentation_attachment_types_url assert_equal 'Presentation attachment type saved', flash[:success] + assert_not_nil PresentationAttachmentType.i18n.find_by(id: @presentation_attachment_type.id, name: 'Appendices') end test 'should update presentation attachment type with remote form' do - attributes = @presentation_attachment_type.attributes - attributes[:name] = @presentation_attachment_type.name patch admin_conferences_presentation_attachment_type_url(@presentation_attachment_type), - params: { presentation_attachment_type: attributes }, as: :turbo_stream + params: { presentation_attachment_type: { name: 'Appendices' } }, as: :turbo_stream assert_redirected_to admin_conferences_presentation_attachment_types_url assert_equal 'Presentation attachment type saved', flash[:success] + assert_not_nil PresentationAttachmentType.i18n.find_by(id: @presentation_attachment_type.id, name: 'Appendices') end test 'should fail to update invalid presentation attachment type' do - attributes = @invalid_presentation_attachment_type.attributes - attributes[:name] = @invalid_presentation_attachment_type.name patch admin_conferences_presentation_attachment_type_url(@presentation_attachment_type), - params: { presentation_attachment_type: attributes } + params: { presentation_attachment_type: { name: nil } } assert_response :success assert_not_equal 'Presentation attachment type saved', flash[:success] end test 'should fail to update invalid presentation attachment type with remote form' do - attributes = @invalid_presentation_attachment_type.attributes - attributes[:name] = @invalid_presentation_attachment_type.name patch admin_conferences_presentation_attachment_type_url(@presentation_attachment_type), - params: { presentation_attachment_type: attributes }, as: :turbo_stream + params: { presentation_attachment_type: { name: nil } }, as: :turbo_stream assert_response :success assert_not_equal 'Presentation attachment type saved', flash[:success] end + test 'should update presentation attachment type in locale' do + assert_changes -> { @presentation_attachment_type.reload.name(locale: :en) }, to: 'Overhead slides' do + patch admin_conferences_presentation_attachment_type_url(@presentation_attachment_type), + params: { presentation_attachment_type: { name: 'Overhead slides' }, locale: :en } + assert_redirected_to admin_conferences_presentation_attachment_types_url + assert_equal 'Presentation attachment type saved', flash[:success] + end + assert_not_equal 'overhead slides', @presentation_attachment_type.reload.name + end + + test 'should update presentation attachment type in locale with remote form' do + assert_changes -> { @presentation_attachment_type.reload.name(locale: :en) }, to: 'Overhead slides' do + patch admin_conferences_presentation_attachment_type_url(@presentation_attachment_type), + params: { presentation_attachment_type: { name: 'Overhead slides' }, locale: :en }, as: :turbo_stream + assert_redirected_to admin_conferences_presentation_attachment_types_url + assert_equal 'Presentation attachment type saved', flash[:success] + end + assert_not_equal 'overhead slides', @presentation_attachment_type.reload.name + end + test 'should destroy presentation attachment type' do assert_difference 'PresentationAttachmentType.count', -1 do delete admin_conferences_presentation_attachment_type_url(@presentation_attachment_type) diff --git a/test/controllers/spina/admin/conferences/presentation_types_controller_test.rb b/test/controllers/spina/admin/conferences/presentation_types_controller_test.rb index 13919119..534990af 100644 --- a/test/controllers/spina/admin/conferences/presentation_types_controller_test.rb +++ b/test/controllers/spina/admin/conferences/presentation_types_controller_test.rb @@ -11,7 +11,6 @@ class PresentationTypesControllerTest < ActionDispatch::IntegrationTest # ruboco setup do @presentation_type = spina_admin_conferences_presentation_types :oral_1 - @invalid_presentation_type = PresentationType.new @empty_presentation_type = spina_admin_conferences_presentation_types :empty_presentation_type @user = spina_users :joe post admin_sessions_url, params: { email: @user.email, password: 'password' } @@ -44,15 +43,32 @@ class PresentationTypesControllerTest < ActionDispatch::IntegrationTest # ruboco end end + test 'should get edit in locale' do + get edit_admin_conferences_presentation_type_url(@presentation_type, locale: :en) + assert_response :success + assert_select '#presentations tbody > tr' do |table_rows| + table_rows.each { |row| assert_select row, 'td', 4 } + end + assert_select('#sessions tbody > tr') do |table_rows| + table_rows.each { |row| assert_select row, 'td', 4 } + end + end + test 'should create presentation type' do attributes = @presentation_type.attributes attributes[:minutes] = @presentation_type.minutes attributes[:name] = @presentation_type.name assert_difference 'PresentationType.count' do - post admin_conferences_presentation_types_url, params: { presentation_type: attributes } + post admin_conferences_presentation_types_url, + params: { presentation_type: { minutes: 40, + conference_id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018), + name: 'Snail talk' } } end assert_redirected_to admin_conferences_presentation_types_url assert_equal 'Presentation type saved', flash[:success] + assert_not_nil PresentationType.i18n.find_by(duration: 40.minutes, + conference: ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018), + name: 'Snail talk') end test 'should create presentation type with remote form' do @@ -60,72 +76,98 @@ class PresentationTypesControllerTest < ActionDispatch::IntegrationTest # ruboco attributes[:minutes] = @presentation_type.minutes attributes[:name] = @presentation_type.name assert_difference 'PresentationType.count' do - post admin_conferences_presentation_types_url, params: { presentation_type: attributes }, as: :turbo_stream + post admin_conferences_presentation_types_url, + params: { presentation_type: { minutes: 40, + conference_id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018), + name: 'Snail talk' } }, + as: :turbo_stream end assert_redirected_to admin_conferences_presentation_types_url assert_equal 'Presentation type saved', flash[:success] + assert_not_nil PresentationType.i18n.find_by(duration: 40.minutes, + conference: ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018), + name: 'Snail talk') end test 'should fail to create invalid presentation type' do - attributes = @invalid_presentation_type.attributes - attributes[:minutes] = @invalid_presentation_type.minutes - attributes[:name] = @invalid_presentation_type.name assert_no_difference 'PresentationType.count' do - post admin_conferences_presentation_types_url, params: { presentation_type: attributes } + post admin_conferences_presentation_types_url, params: { presentation_type: { minutes: nil, conference_id: nil, name: nil } } end assert_response :success assert_not_equal 'Presentation type saved', flash[:success] end test 'should fail to create invalid presentation type with remote form' do - attributes = @invalid_presentation_type.attributes - attributes[:minutes] = @invalid_presentation_type.minutes - attributes[:name] = @invalid_presentation_type.name assert_no_difference 'PresentationType.count' do - post admin_conferences_presentation_types_url, params: { presentation_type: attributes }, as: :turbo_stream + post admin_conferences_presentation_types_url, + params: { presentation_type: { minutes: nil, conference_id: nil, name: nil } }, + as: :turbo_stream end assert_response :success assert_not_equal 'Presentation type saved', flash[:success] end test 'should update presentation type' do - attributes = @presentation_type.attributes - attributes[:minutes] = @presentation_type.minutes - attributes[:name] = @presentation_type.name - patch admin_conferences_presentation_type_url(@presentation_type), params: { presentation_type: attributes } + patch admin_conferences_presentation_type_url(@presentation_type), + params: { presentation_type: { minutes: 40, + conference_id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018), + name: 'Snail talk' } } assert_redirected_to admin_conferences_presentation_types_url assert_equal 'Presentation type saved', flash[:success] + assert_not_nil PresentationType.i18n.find_by(id: @presentation_type.id, + duration: 40.minutes, + conference: ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018), + name: 'Snail talk') end test 'should update presentation type with remote form' do - attributes = @presentation_type.attributes - attributes[:minutes] = @presentation_type.minutes - attributes[:name] = @presentation_type.name patch admin_conferences_presentation_type_url(@presentation_type), - params: { presentation_type: attributes }, as: :turbo_stream + params: { presentation_type: { minutes: 40, + conference_id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018), + name: 'Snail talk' } }, + as: :turbo_stream assert_redirected_to admin_conferences_presentation_types_url assert_equal 'Presentation type saved', flash[:success] + assert_not_nil PresentationType.i18n.find_by(id: @presentation_type.id, + duration: 40.minutes, + conference: ActiveRecord::FixtureSet.identify(:university_of_shangri_la_2018), + name: 'Snail talk') end test 'should fail to update invalid presentation type' do - attributes = @invalid_presentation_type.attributes - attributes[:minutes] = @invalid_presentation_type.minutes - attributes[:name] = @invalid_presentation_type.name - patch admin_conferences_presentation_type_url(@presentation_type), params: { presentation_type: attributes } + patch admin_conferences_presentation_type_url(@presentation_type), + params: { presentation_type: { minutes: nil, conference_id: nil, name: nil } } assert_response :success assert_not_equal 'Presentation type saved', flash[:success] end test 'should fail to update invalid presentation type with remote form' do - attributes = @invalid_presentation_type.attributes - attributes[:minutes] = @invalid_presentation_type.minutes - attributes[:name] = @invalid_presentation_type.name patch admin_conferences_presentation_type_url(@presentation_type), - params: { presentation_type: attributes }, as: :turbo_stream + params: { presentation_type: { minutes: nil, conference_id: nil, name: nil } }, + as: :turbo_stream assert_response :success assert_not_equal 'Presentation type saved', flash[:success] end + test 'should update presentation type in locale' do + assert_changes -> { @presentation_type.reload.name(locale: :en) }, to: 'Talk' do + patch admin_conferences_presentation_type_url(@presentation_type), params: { presentation_type: { name: 'Talk' }, locale: :en } + assert_redirected_to admin_conferences_presentation_types_url + assert_equal 'Presentation type saved', flash[:success] + end + assert_not_equal 'Talk', @presentation_type.reload.name + end + + test 'should update presentation type in locale with remote form' do + assert_changes -> { @presentation_type.reload.name(locale: :en) }, to: 'Talk' do + patch admin_conferences_presentation_type_url(@presentation_type), + params: { presentation_type: { name: 'Talk' }, locale: :en }, as: :turbo_stream + assert_redirected_to admin_conferences_presentation_types_url + assert_equal 'Presentation type saved', flash[:success] + end + assert_not_equal 'Talk', @presentation_type.reload.name + end + test 'should destroy presentation type' do assert_difference 'PresentationType.count', -1 do delete admin_conferences_presentation_type_url(@empty_presentation_type) diff --git a/test/controllers/spina/admin/conferences/presentations_controller_test.rb b/test/controllers/spina/admin/conferences/presentations_controller_test.rb index b3a7abd6..54667b09 100644 --- a/test/controllers/spina/admin/conferences/presentations_controller_test.rb +++ b/test/controllers/spina/admin/conferences/presentations_controller_test.rb @@ -10,7 +10,6 @@ class PresentationsControllerTest < ActionDispatch::IntegrationTest # rubocop:di setup do @presentation = spina_admin_conferences_presentations :asymmetry_and_antisymmetry - @invalid_presentation = Presentation.new @user = spina_users :joe post admin_sessions_url, params: { email: @user.email, password: 'password' } end @@ -36,111 +35,170 @@ class PresentationsControllerTest < ActionDispatch::IntegrationTest # rubocop:di end end + test 'should get edit in locale' do + get edit_admin_conferences_presentation_url(@presentation, locale: :en) + assert_response :success + assert_select('#presenters tbody > tr') do |table_rows| + table_rows.each { |row| assert_select row, 'td', 4 } + end + end + test 'should create presentation' do - attributes = @presentation.attributes - attributes[:session_id] = @presentation.session_id - attributes[:presenter_ids] = @presentation.presenter_ids - attributes[:start_time] = @presentation.start_time - attributes[:date] = @presentation.date - attributes[:title] = @presentation.title - attributes[:abstract] = @presentation.abstract assert_difference 'Presentation.count' do - post admin_conferences_presentations_url, params: { presentation: attributes } + post admin_conferences_presentations_url, + params: { presentation: { presenter_ids: [ActiveRecord::FixtureSet.identify(:brandon_krapp)], + start_datetime: DateTime.parse('2017-04-08 10:00'), + session_id: ActiveRecord::FixtureSet.identify(:oral_1_lecture_block_3_uoa_2017), + title: 'The entire discussion of phonology in this book suffers from a fundamental ' \ + 'theoretical inadequacy', + abstract: 'Dolor sit amen' } } end assert_redirected_to admin_conferences_presentations_url assert_equal 'Presentation saved', flash[:success] + assert_not_nil Presentation.i18n + .joins(:presenters) + .find_by(presenters: { id: ActiveRecord::FixtureSet.identify(:brandon_krapp) }, + start_datetime: DateTime.parse('2017-04-08 10:00'), + session: ActiveRecord::FixtureSet.identify(:oral_1_lecture_block_3_uoa_2017), + title: 'The entire discussion of phonology in this book suffers from a fundamental ' \ + 'theoretical inadequacy', + abstract: 'Dolor sit amen') end test 'should create presentation with remote form' do - attributes = @presentation.attributes - attributes[:presenter_ids] = @presentation.presenter_ids - attributes[:start_time] = @presentation.start_time - attributes[:date] = @presentation.date - attributes[:title] = @presentation.title - attributes[:abstract] = @presentation.abstract assert_difference 'Presentation.count' do - post admin_conferences_presentations_url, params: { presentation: attributes }, as: :turbo_stream + post admin_conferences_presentations_url, + params: { presentation: { presenter_ids: [ActiveRecord::FixtureSet.identify(:brandon_krapp)], + start_datetime: DateTime.parse('2017-04-08 10:00'), + session_id: ActiveRecord::FixtureSet.identify(:oral_1_lecture_block_3_uoa_2017), + title: 'The entire discussion of phonology in this book suffers from a fundamental ' \ + 'theoretical inadequacy', + abstract: 'Dolor sit amen' } }, + as: :turbo_stream end assert_redirected_to admin_conferences_presentations_url assert_equal 'Presentation saved', flash[:success] + assert_not_nil Presentation.i18n + .joins(:presenters) + .find_by(presenters: { id: ActiveRecord::FixtureSet.identify(:brandon_krapp) }, + start_datetime: DateTime.parse('2017-04-08 10:00'), + session: ActiveRecord::FixtureSet.identify(:oral_1_lecture_block_3_uoa_2017), + title: 'The entire discussion of phonology in this book suffers from a fundamental ' \ + 'theoretical inadequacy', + abstract: 'Dolor sit amen') end test 'should fail to create invalid presentation' do - attributes = @invalid_presentation.attributes - attributes[:presenter_ids] = @invalid_presentation.presenter_ids - attributes[:start_time] = @invalid_presentation.start_time - attributes[:date] = @invalid_presentation.date - attributes[:title] = @invalid_presentation.title - attributes[:abstract] = @invalid_presentation.abstract assert_no_difference 'Presentation.count' do - post admin_conferences_presentations_url, params: { presentation: attributes } + post admin_conferences_presentations_url, + params: { presentation: { presenter_ids: [], start_datetime: nil, session_id: nil, title: nil, abstract: nil } } end assert_response :success assert_not_equal 'Presentation saved', flash[:success] end test 'should fail to create invalid presentation with remote form' do - attributes = @invalid_presentation.attributes - attributes[:presenter_ids] = @invalid_presentation.presenter_ids - attributes[:start_time] = @invalid_presentation.start_time - attributes[:date] = @invalid_presentation.date - attributes[:title] = @invalid_presentation.title - attributes[:abstract] = @invalid_presentation.abstract assert_no_difference 'Presentation.count' do - post admin_conferences_presentations_url, params: { presentation: attributes }, as: :turbo_stream + post admin_conferences_presentations_url, + params: { presentation: { presenter_ids: [], start_datetime: nil, session_id: nil, title: nil, abstract: nil } }, + as: :turbo_stream end assert_response :success assert_not_equal 'Presentation saved', flash[:success] end test 'should update presentation' do - attributes = @presentation.attributes - attributes[:presenter_ids] = @presentation.presenter_ids - attributes[:start_time] = @presentation.start_time - attributes[:date] = @presentation.date - attributes[:title] = @presentation.title - attributes[:abstract] = @presentation.abstract - patch admin_conferences_presentation_url(@presentation), params: { presentation: attributes } + patch admin_conferences_presentation_url(@presentation), + params: { presentation: { presenter_ids: [ActiveRecord::FixtureSet.identify(:brandon_krapp)], + start_datetime: DateTime.parse('2017-04-08 10:00'), + session_id: ActiveRecord::FixtureSet.identify(:oral_1_lecture_block_3_uoa_2017), + title: 'The entire discussion of phonology in this book suffers from a fundamental ' \ + 'theoretical inadequacy', + abstract: 'Dolor sit amen' } } assert_redirected_to admin_conferences_presentations_url assert_equal 'Presentation saved', flash[:success] + assert_not_nil Presentation.i18n + .joins(:presenters) + .find_by(id: @presentation.id, + presenters: { id: ActiveRecord::FixtureSet.identify(:brandon_krapp) }, + start_datetime: DateTime.parse('2017-04-08 10:00'), + session: ActiveRecord::FixtureSet.identify(:oral_1_lecture_block_3_uoa_2017), + title: 'The entire discussion of phonology in this book suffers from a fundamental ' \ + 'theoretical inadequacy', + abstract: 'Dolor sit amen') end test 'should update presentation with remote form' do - attributes = @presentation.attributes - attributes[:presenter_ids] = @presentation.presenter_ids - attributes[:start_time] = @presentation.start_time - attributes[:date] = @presentation.date - attributes[:title] = @presentation.title - attributes[:abstract] = @presentation.abstract - patch admin_conferences_presentation_url(@presentation), params: { presentation: attributes }, as: :turbo_stream + patch admin_conferences_presentation_url(@presentation), + params: { presentation: { presenter_ids: [ActiveRecord::FixtureSet.identify(:brandon_krapp)], + start_datetime: DateTime.parse('2017-04-08 10:00'), + session_id: ActiveRecord::FixtureSet.identify(:oral_1_lecture_block_3_uoa_2017), + title: 'The entire discussion of phonology in this book suffers from a fundamental ' \ + 'theoretical inadequacy', + abstract: 'Dolor sit amen' } }, + as: :turbo_stream assert_redirected_to admin_conferences_presentations_url assert_equal 'Presentation saved', flash[:success] + assert_not_nil Presentation.i18n + .joins(:presenters) + .find_by(id: @presentation.id, + presenters: { id: ActiveRecord::FixtureSet.identify(:brandon_krapp) }, + start_datetime: DateTime.parse('2017-04-08 10:00'), + session: ActiveRecord::FixtureSet.identify(:oral_1_lecture_block_3_uoa_2017), + title: 'The entire discussion of phonology in this book suffers from a fundamental ' \ + 'theoretical inadequacy', + abstract: 'Dolor sit amen') end test 'should fail to update invalid presentation' do - attributes = @invalid_presentation.attributes - attributes[:presenter_ids] = @invalid_presentation.presenter_ids - attributes[:start_time] = @invalid_presentation.start_time - attributes[:date] = @invalid_presentation.date - attributes[:title] = @invalid_presentation.title - attributes[:abstract] = @invalid_presentation.abstract - patch admin_conferences_presentation_url(@presentation), params: { presentation: attributes } + patch admin_conferences_presentation_url(@presentation), + params: { presentation: { presenter_ids: [], start_datetime: nil, session_id: nil, title: nil, abstract: nil } } assert_response :success assert_not_equal 'Presentation saved', flash[:success] end test 'should fail to update invalid presentation with remote form' do - attributes = @invalid_presentation.attributes - attributes[:presenter_ids] = @invalid_presentation.presenter_ids - attributes[:start_time] = @invalid_presentation.start_time - attributes[:date] = @invalid_presentation.date - attributes[:title] = @invalid_presentation.title - attributes[:abstract] = @invalid_presentation.abstract - patch admin_conferences_presentation_url(@presentation), params: { presentation: attributes }, as: :turbo_stream + patch admin_conferences_presentation_url(@presentation), + params: { presentation: { presenter_ids: [], start_datetime: nil, session_id: nil, title: nil, abstract: nil } }, + as: :turbo_stream assert_response :success assert_not_equal 'Presentation saved', flash[:success] end + test 'should update presentation in locale' do + assert_changes -> { @presentation.reload.title(locale: :en) }, to: 'Antisymmetry and asymmetry' do + patch admin_conferences_presentation_url(@presentation), + params: { presentation: { title: 'Antisymmetry and asymmetry' }, locale: :en } + assert_redirected_to admin_conferences_presentations_url + assert_equal 'Presentation saved', flash[:success] + end + assert_changes -> { @presentation.reload.abstract(locale: :en).try(:to_plain_text) }, to: 'Dolor sit amen.' do + patch admin_conferences_presentation_url(@presentation), + params: { presentation: { abstract: 'Dolor sit amen.' }, locale: :en } + assert_redirected_to admin_conferences_presentations_url + assert_equal 'Presentation saved', flash[:success] + end + assert_not_equal 'Antisymmetry and asymmetry', @presentation.reload.title + assert_not_equal 'Dolor sit amen.', @presentation.reload.abstract.to_plain_text + end + + test 'should update presentation in locale with remote form' do + assert_changes -> { @presentation.reload.title(locale: :en) }, to: 'Antisymmetry and asymmetry' do + patch admin_conferences_presentation_url(@presentation), + params: { presentation: { title: 'Antisymmetry and asymmetry' }, locale: :en }, as: :turbo_stream + assert_redirected_to admin_conferences_presentations_url + assert_equal 'Presentation saved', flash[:success] + end + assert_changes -> { @presentation.reload.abstract(locale: :en).try(:to_plain_text) }, to: 'Dolor sit amen.' do + patch admin_conferences_presentation_url(@presentation), + params: { presentation: { abstract: 'Dolor sit amen.' }, locale: :en }, as: :turbo_stream + assert_redirected_to admin_conferences_presentations_url + assert_equal 'Presentation saved', flash[:success] + end + assert_not_equal 'Antisymmetry and asymmetry', @presentation.reload.title + assert_not_equal 'Dolor sit amen.', @presentation.reload.abstract.to_plain_text + end + test 'should destroy presentation' do assert_difference 'Presentation.count', -1 do delete admin_conferences_presentation_url(@presentation) diff --git a/test/controllers/spina/admin/conferences/rooms_controller_test.rb b/test/controllers/spina/admin/conferences/rooms_controller_test.rb index e8771582..0ac0890b 100644 --- a/test/controllers/spina/admin/conferences/rooms_controller_test.rb +++ b/test/controllers/spina/admin/conferences/rooms_controller_test.rb @@ -10,7 +10,6 @@ class RoomsControllerTest < ActionDispatch::IntegrationTest # rubocop:disable Me setup do @room = spina_admin_conferences_rooms :lecture_block_2 - @invalid_room = Room.new @empty_room = spina_admin_conferences_rooms :empty_room @user = spina_users :joe post admin_sessions_url, params: { email: @user.email, password: 'password' } @@ -37,86 +36,131 @@ class RoomsControllerTest < ActionDispatch::IntegrationTest # rubocop:disable Me end end + test 'should get edit in locale' do + get edit_admin_conferences_room_url(@room, locale: :en) + assert_response :success + assert_select '#presentations tbody > tr' do |table_rows| + table_rows.each { |row| assert_select row, 'td', 4 } + end + end + test 'should create room' do attributes = @room.attributes attributes[:building] = @room.building attributes[:number] = @room.number assert_difference 'Room.count' do - post admin_conferences_rooms_url, params: { room: attributes } + post admin_conferences_rooms_url, + params: { room: { institution_id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + building: 'Bosch building', + number: '666' } } end assert_redirected_to admin_conferences_rooms_url assert_equal 'Room saved', flash[:success] + assert_not_nil Room.i18n.find_by(institution: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + building: 'Bosch building', + number: '666') end test 'should create room with remote form' do - attributes = @room.attributes - attributes[:building] = @room.building - attributes[:number] = @room.number assert_difference 'Room.count' do - post admin_conferences_rooms_url, params: { room: attributes }, as: :turbo_stream + post admin_conferences_rooms_url, + params: { room: { institution_id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + building: 'Bosch building', + number: '666' } }, + as: :turbo_stream end assert_redirected_to admin_conferences_rooms_url assert_equal 'Room saved', flash[:success] + assert_not_nil Room.i18n.find_by(institution: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + building: 'Bosch building', + number: '666') end test 'should fail to create invalid room' do - attributes = @invalid_room.attributes - attributes[:building] = @invalid_room.building - attributes[:number] = @invalid_room.number assert_no_difference 'Room.count' do - post admin_conferences_rooms_url, params: { room: attributes } + post admin_conferences_rooms_url, params: { room: { institution_id: nil, building: nil, number: nil } } end assert_response :success assert_not_equal 'Room saved', flash[:success] end test 'should fail to create invalid room with remote form' do - attributes = @invalid_room.attributes - attributes[:building] = @invalid_room.building - attributes[:number] = @invalid_room.number assert_no_difference 'Room.count' do - post admin_conferences_rooms_url, params: { room: attributes }, as: :turbo_stream + post admin_conferences_rooms_url, params: { room: { institution_id: nil, building: nil, number: nil } }, as: :turbo_stream end assert_response :success assert_not_equal 'Room saved', flash[:success] end test 'should update room' do - attributes = @room.attributes - attributes[:building] = @room.building - attributes[:number] = @room.number - patch admin_conferences_room_url(@room), params: { room: attributes } + patch admin_conferences_room_url(@room), + params: { room: { institution_id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + building: 'Bosch building', + number: '666' } } assert_redirected_to admin_conferences_rooms_url assert_equal 'Room saved', flash[:success] + assert_not_nil Room.i18n.find_by(id: @room.id, + institution: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + building: 'Bosch building', + number: '666') end test 'should update room with remote form' do - attributes = @room.attributes - attributes[:building] = @room.building - attributes[:number] = @room.number - patch admin_conferences_room_url(@room), params: { room: attributes }, as: :turbo_stream + patch admin_conferences_room_url(@room), + params: { room: { institution_id: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + building: 'Bosch building', + number: '666' } }, + as: :turbo_stream assert_redirected_to admin_conferences_rooms_url assert_equal 'Room saved', flash[:success] + assert_not_nil Room.i18n.find_by(id: @room.id, + institution: ActiveRecord::FixtureSet.identify(:university_of_shangri_la), + building: 'Bosch building', + number: '666') end test 'should fail to update invalid room' do - attributes = @invalid_room.attributes - attributes[:building] = @invalid_room.building - attributes[:number] = @invalid_room.number - patch admin_conferences_room_url(@room), params: { room: attributes } + patch admin_conferences_room_url(@room), params: { room: { institution_id: nil, building: nil, number: nil } } assert_response :success assert_not_equal 'Room saved', flash[:success] end test 'should fail to update invalid room with remote form' do - attributes = @invalid_room.attributes - attributes[:building] = @invalid_room.building - attributes[:number] = @invalid_room.number - patch admin_conferences_room_url(@room), params: { room: attributes }, as: :turbo_stream + patch admin_conferences_room_url(@room), params: { room: { institution_id: nil, building: nil, number: nil } }, as: :turbo_stream assert_response :success assert_not_equal 'Room saved', flash[:success] end + test 'should update room in locale' do + assert_changes -> { @room.reload.building(locale: :en) }, to: 'LB' do + patch admin_conferences_room_url(@room), params: { room: { building: 'LB' }, locale: :en } + assert_redirected_to admin_conferences_rooms_url + assert_equal 'Room saved', flash[:success] + end + assert_changes -> { @room.reload.number(locale: :en) }, to: 'Two' do + patch admin_conferences_room_url(@room), params: { room: { number: 'Two' }, locale: :en } + assert_redirected_to admin_conferences_rooms_url + assert_equal 'Room saved', flash[:success] + end + assert_not_equal 'LB', @room.reload.building + assert_not_equal 'Two', @room.reload.number + end + + test 'should update room in locale with remote form' do + assert_changes -> { @room.reload.building(locale: :en) }, to: 'LB' do + patch admin_conferences_room_url(@room), params: { room: { building: 'LB' }, locale: :en }, as: :turbo_stream + assert_redirected_to admin_conferences_rooms_url + assert_equal 'Room saved', flash[:success] + end + assert_changes -> { @room.reload.number(locale: :en) }, to: 'Two' do + patch admin_conferences_room_url(@room), params: { room: { number: 'Two' }, locale: :en }, as: :turbo_stream + assert_redirected_to admin_conferences_rooms_url + assert_equal 'Room saved', flash[:success] + end + assert_not_equal 'LB', @room.reload.building + assert_not_equal 'Two', @room.reload.number + end + test 'should destroy room' do assert_difference 'Room.count', -1 do delete admin_conferences_room_url(@empty_room) diff --git a/test/controllers/spina/admin/conferences/sessions_controller_test.rb b/test/controllers/spina/admin/conferences/sessions_controller_test.rb index 50663593..81bc9321 100644 --- a/test/controllers/spina/admin/conferences/sessions_controller_test.rb +++ b/test/controllers/spina/admin/conferences/sessions_controller_test.rb @@ -10,7 +10,6 @@ class SessionsControllerTest < ActionDispatch::IntegrationTest # rubocop:disable setup do @session = spina_admin_conferences_sessions :oral_1_lecture_block_2_uoa_2017 - @invalid_session = Session.new @empty_session = spina_admin_conferences_sessions :empty_session @user = spina_users :joe post admin_sessions_url, params: { email: @user.email, password: 'password' } @@ -37,78 +36,119 @@ class SessionsControllerTest < ActionDispatch::IntegrationTest # rubocop:disable end end + test 'should get edit in locale' do + get edit_admin_conferences_session_url(@session, locale: :en) + assert_response :success + assert_select '#presentations tbody > tr' do |table_rows| + table_rows.each { |row| assert_select row, 'td', 4 } + end + end + test 'should create session' do - attributes = @session.attributes - attributes[:name] = @session.name assert_difference 'Session.count' do - post admin_conferences_sessions_url, params: { session: attributes } + post admin_conferences_sessions_url, params: { session: { presentation_type_id: ActiveRecord::FixtureSet.identify(:oral_2), + room_id: ActiveRecord::FixtureSet.identify(:lecture_block_3), + name: 'Orals in Lecture Block 3' } } end assert_redirected_to admin_conferences_sessions_url assert_equal 'Session saved', flash[:success] + assert_not_nil Session.i18n.find_by(presentation_type_id: ActiveRecord::FixtureSet.identify(:oral_2), + room: ActiveRecord::FixtureSet.identify(:lecture_block_3), + name: 'Orals in Lecture Block 3') end test 'should create session with remote form' do - attributes = @session.attributes - attributes[:name] = @session.name assert_difference 'Session.count' do - post admin_conferences_sessions_url, params: { session: attributes }, as: :turbo_stream + post admin_conferences_sessions_url, + params: { session: { presentation_type_id: ActiveRecord::FixtureSet.identify(:oral_2), + room_id: ActiveRecord::FixtureSet.identify(:lecture_block_3), + name: 'Orals in Lecture Block 3' } }, + as: :turbo_stream end assert_redirected_to admin_conferences_sessions_url assert_equal 'Session saved', flash[:success] + assert_not_nil Session.i18n.find_by(presentation_type_id: ActiveRecord::FixtureSet.identify(:oral_2), + room: ActiveRecord::FixtureSet.identify(:lecture_block_3), + name: 'Orals in Lecture Block 3') end test 'should fail to create invalid session' do - attributes = @invalid_session.attributes - attributes[:name] = @invalid_session.name assert_no_difference 'Session.count' do - post admin_conferences_sessions_url, params: { session: attributes } + post admin_conferences_sessions_url, params: { session: { presentation_type_id: nil, room_id: nil, name: nil } } end assert_response :success assert_not_equal 'Session saved', flash[:success] end test 'should fail to create invalid session with remote form' do - attributes = @invalid_session.attributes - attributes[:name] = @invalid_session.name assert_no_difference 'Session.count' do - post admin_conferences_sessions_url, params: { session: attributes }, as: :turbo_stream + post admin_conferences_sessions_url, + params: { session: { presentation_type_id: nil, room_id: nil, name: nil } }, as: :turbo_stream end assert_response :success assert_not_equal 'Session saved', flash[:success] end test 'should update session' do - attributes = @session.attributes - attributes[:name] = @session.name - patch admin_conferences_session_url(@session), params: { session: attributes } + patch admin_conferences_session_url(@session), + params: { session: { presentation_type_id: ActiveRecord::FixtureSet.identify(:oral_2), + room_id: ActiveRecord::FixtureSet.identify(:lecture_block_3), + name: 'Orals in Lecture Block 3' } } assert_redirected_to admin_conferences_sessions_url assert_equal 'Session saved', flash[:success] + assert_not_nil Session.i18n.find_by(id: @session.id, + presentation_type_id: ActiveRecord::FixtureSet.identify(:oral_2), + room: ActiveRecord::FixtureSet.identify(:lecture_block_3), + name: 'Orals in Lecture Block 3') end test 'should update session with remote form' do - attributes = @session.attributes - attributes[:name] = @session.name - patch admin_conferences_session_url(@session), params: { session: attributes }, as: :turbo_stream + patch admin_conferences_session_url(@session), + params: { session: { presentation_type_id: ActiveRecord::FixtureSet.identify(:oral_2), + room_id: ActiveRecord::FixtureSet.identify(:lecture_block_3), + name: 'Orals in Lecture Block 3' } }, + as: :turbo_stream assert_redirected_to admin_conferences_sessions_url assert_equal 'Session saved', flash[:success] + assert_not_nil Session.i18n.find_by(id: @session.id, + presentation_type_id: ActiveRecord::FixtureSet.identify(:oral_2), + room: ActiveRecord::FixtureSet.identify(:lecture_block_3), + name: 'Orals in Lecture Block 3') end test 'should fail to update invalid session' do - attributes = @invalid_session.attributes - attributes[:name] = @invalid_session.name - patch admin_conferences_session_url(@session), params: { session: attributes } + patch admin_conferences_session_url(@session), params: { session: { presentation_type_id: nil, room_id: nil, name: nil } } assert_response :success assert_not_equal 'Session saved', flash[:success] end test 'should fail to update invalid session with remote form' do - attributes = @invalid_session.attributes - attributes[:name] = @invalid_session.name - patch admin_conferences_session_url(@session), params: { session: attributes }, as: :turbo_stream + patch admin_conferences_session_url(@session), + params: { session: { presentation_type_id: nil, room_id: nil, name: nil } }, as: :turbo_stream assert_response :success assert_not_equal 'Session saved', flash[:success] end + test 'should update session in locale' do + assert_changes -> { @session.reload.name(locale: :en) }, to: 'Talks in Lecture Block Two' do + patch admin_conferences_session_url(@session), + params: { session: { name: 'Talks in Lecture Block Two' }, locale: :en } + assert_redirected_to admin_conferences_sessions_url + assert_equal 'Session saved', flash[:success] + end + assert_not_equal 'Talks in Lecture Block Two', @session.reload.name + end + + test 'should update session in locale with remote form' do + assert_changes -> { @session.reload.name(locale: :en) }, to: 'Talks in Lecture Block Two' do + patch admin_conferences_session_url(@session), + params: { session: { name: 'Talks in Lecture Block Two' }, locale: :en }, as: :turbo_stream + assert_redirected_to admin_conferences_sessions_url + assert_equal 'Session saved', flash[:success] + end + assert_not_equal 'Talks in Lecture Block Two', @session.reload.name + end + test 'should destroy session' do assert_difference 'Session.count', -1 do delete admin_conferences_session_url(@empty_session) diff --git a/test/system/spina/admin/conferences/conferences_test.rb b/test/system/spina/admin/conferences/conferences_test.rb index 29f56d5a..39962aeb 100644 --- a/test/system/spina/admin/conferences/conferences_test.rb +++ b/test/system/spina/admin/conferences/conferences_test.rb @@ -9,29 +9,17 @@ class ConferencesTest < ApplicationSystemTestCase # rubocop:disable Metrics/Clas setup do @conference = spina_admin_conferences_conferences :university_of_atlantis_2017 @empty_conference = spina_admin_conferences_conferences :empty_conference - @user = spina_users :joe - visit admin_login_path - within '.login-fields' do - fill_in 'email', with: @user.email - fill_in 'password', with: 'password' - end - click_on 'Login' end test 'visiting the index' do visit admin_conferences_conferences_path - assert_selector '.breadcrumbs' do - assert_text 'Conferences' - end Percy.snapshot page, name: 'Conferences index' end test 'creating a conference' do # rubocop:disable Metrics/BlockLength visit admin_conferences_conferences_path click_on 'New conference' - assert_selector '.breadcrumbs' do - assert_text 'New conference' - end + assert_current_path new_admin_conferences_conference_path fill_in 'conference_name', with: @conference.name fill_in 'conference_start_date', with: @conference.start_date fill_in 'conference_finish_date', with: @conference.finish_date @@ -96,9 +84,7 @@ class ConferencesTest < ApplicationSystemTestCase # rubocop:disable Metrics/Clas within "tr[data-conference-id=\"#{@conference.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @conference.name - end + assert_current_path edit_admin_conferences_conference_path(@conference) Percy.snapshot page, name: 'Conferences form on update' fill_in 'conference_name', with: @conference.name fill_in 'conference_start_date', with: @conference.start_date @@ -160,14 +146,82 @@ class ConferencesTest < ApplicationSystemTestCase # rubocop:disable Metrics/Clas Percy.snapshot page, name: 'Conferences index on update' end + test 'updating a conference in a locale' do # rubocop:disable Metrics/BlockLength + visit admin_conferences_conferences_path + within "tr[data-conference-id=\"#{@conference.id}\"]" do + click_on 'Edit' + end + assert_current_path edit_admin_conferences_conference_path(@conference) + click_link 'British English' + click_link 'English' + assert_current_path edit_admin_conferences_conference_path(@conference, locale: :en) + Percy.snapshot page, name: 'Conferences form on update in locale' + fill_in 'conference_name', with: @conference.name + fill_in 'conference_start_date', with: @conference.start_date + fill_in 'conference_finish_date', with: @conference.finish_date + within '.event' do + click_link class: %w[button button-link icon] + within '.structure-form-menu ul' do + click_link href: '#structure_form_pane_1' + end + within '#structure_form_pane_1' do + fill_in id: /conference_events_attributes_[0-9]_name/, with: @conference.events.first.name + fill_in id: /conference_events_attributes_[0-9]_start_datetime/, with: @conference.events.first.start_datetime + fill_in id: /conference_events_attributes_[0-9]_finish_datetime/, with: @conference.events.first.finish_datetime + fill_in id: /conference_events_attributes_[0-9]_location/, with: @conference.events.first.location + fill_in_rich_text_area with: @conference.events.first.description + end + end + click_on 'Parts' + within '[data-name="text"]' do + fill_in_rich_text_area with: @conference.content(:text) + end + within '[data-name="submission_url"]' do + fill_in with: @conference.content(:submission_url) + end + within '[data-name="submission_email_address"]' do + fill_in with: @conference.content(:submission_email_address) + end + within '[data-name="submission_date"]' do + fill_in with: @conference.content(:submission_date) + end + within '[data-name="submission_text"]' do + fill_in with: @conference.content(:submission_text) + end + within '[data-name="gallery"]' do + first('.images .page-form-media-picker-placeholder').execute_script <<~JS + this.style.position = 'static' + JS + click_on 'Choose' + end + within '.modal', visible: true, style: { display: 'block' } do + first('.media-picker-image').click + click_on 'Confirm selection (1)' + end + within '[data-name="sponsors"]' do + within id: /structure_form_pane_[0-9]+/ do + fill_in id: /conference_en_content_attributes_[0-9]+_content_attributes_[0-9]+_parts_attributes_0_content/x, + with: @conference.content(:sponsors).first.content(:name) + fill_in id: /conference_en_content_attributes_[0-9]+_content_attributes_[0-9]+_parts_attributes_1_content/x, + with: @conference.content(:sponsors).first.content(:website) + click_on 'Choose image' + end + end + within '.modal', visible: true, style: { display: 'block' } do + first('.media-picker-image').click + end + click_on 'Save conference' + assert_current_path admin_conferences_conferences_path + assert_text 'Conference saved' + Percy.snapshot page, name: 'Conferences index on update in locale' + end + test 'destroying a conference' do visit admin_conferences_conferences_path within "tr[data-conference-id=\"#{@empty_conference.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @empty_conference.name - end + assert_current_path edit_admin_conferences_conference_path(@empty_conference) accept_confirm "Are you sure you want to delete the conference #{@empty_conference.name}?" do click_on 'Permanently delete' Percy.snapshot page, name: 'Conferences delete dialog' diff --git a/test/system/spina/admin/conferences/delegates_test.rb b/test/system/spina/admin/conferences/delegates_test.rb index 05d84d29..626467e5 100644 --- a/test/system/spina/admin/conferences/delegates_test.rb +++ b/test/system/spina/admin/conferences/delegates_test.rb @@ -8,29 +8,17 @@ module Conferences class DelegatesTest < ApplicationSystemTestCase setup do @delegate = spina_admin_conferences_delegates :joe_bloggs - @user = spina_users :joe - visit admin_login_path - within '.login-fields' do - fill_in 'email', with: @user.email - fill_in 'password', with: 'password' - end - click_on 'Login' end test 'visiting the index' do visit admin_conferences_delegates_path - assert_selector '.breadcrumbs' do - assert_text 'Delegates' - end Percy.snapshot page, name: 'Delegates index' end test 'creating a delegate' do visit admin_conferences_delegates_path click_on 'New delegate' - assert_selector '.breadcrumbs' do - assert_text 'New delegate' - end + assert_current_path new_admin_conferences_delegate_path fill_in 'delegate_first_name', with: @delegate.first_name fill_in 'delegate_last_name', with: @delegate.last_name select @delegate.institution.name, from: 'delegate_institution_id' @@ -49,9 +37,7 @@ class DelegatesTest < ApplicationSystemTestCase within "tr[data-delegate-id=\"#{@delegate.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @delegate.full_name - end + assert_current_path edit_admin_conferences_delegate_path(@delegate) Percy.snapshot page, name: 'Delegates form on update' fill_in 'delegate_first_name', with: @delegate.first_name fill_in 'delegate_last_name', with: @delegate.last_name @@ -65,14 +51,34 @@ class DelegatesTest < ApplicationSystemTestCase Percy.snapshot page, name: 'Delegates index on update' end - test 'destroying a delegate' do + test 'updating a delegate in a locale' do visit admin_conferences_delegates_path within "tr[data-delegate-id=\"#{@delegate.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @delegate.full_name + assert_current_path edit_admin_conferences_delegate_path(@delegate) + click_link 'British English' + click_link 'English' + assert_current_path edit_admin_conferences_delegate_path(@delegate, locale: :en) + Percy.snapshot page, name: 'Delegates form on update in locale' + fill_in 'delegate_first_name', with: @delegate.first_name + fill_in 'delegate_last_name', with: @delegate.last_name + select @delegate.institution.name, from: 'delegate_institution_id' + fill_in 'delegate_email_address', with: @delegate.email_address + fill_in 'delegate_url', with: @delegate.url + @delegate.conferences.each { |conference| check conference.name, allow_label_click: true } + click_on 'Save delegate' + assert_current_path admin_conferences_delegates_path + assert_text 'Delegate saved' + Percy.snapshot page, name: 'Delegates index on update in locale' + end + + test 'destroying a delegate' do + visit admin_conferences_delegates_path + within "tr[data-delegate-id=\"#{@delegate.id}\"]" do + click_on 'Edit' end + assert_current_path edit_admin_conferences_delegate_path(@delegate) accept_confirm "Are you sure you want to delete the delegate #{@delegate.full_name}?" do click_on 'Permanently delete' Percy.snapshot page, name: 'Delegates delete dialog' diff --git a/test/system/spina/admin/conferences/dietary_requirements_test.rb b/test/system/spina/admin/conferences/dietary_requirements_test.rb index 3e0640bf..388faef4 100644 --- a/test/system/spina/admin/conferences/dietary_requirements_test.rb +++ b/test/system/spina/admin/conferences/dietary_requirements_test.rb @@ -8,29 +8,17 @@ module Conferences class DietaryRequirementsTest < ApplicationSystemTestCase setup do @dietary_requirement = spina_admin_conferences_dietary_requirements :vegan - @user = spina_users :joe - visit admin_login_path - within '.login-fields' do - fill_in 'email', with: @user.email - fill_in 'password', with: 'password' - end - click_on 'Login' end test 'visiting the index' do visit admin_conferences_dietary_requirements_path - assert_selector '.breadcrumbs' do - assert_text 'Dietary requirements' - end Percy.snapshot page, name: 'Dietary requirements index' end test 'creating a dietary requirement' do visit admin_conferences_dietary_requirements_path click_on 'New dietary requirement' - assert_selector '.breadcrumbs' do - assert_text 'New dietary requirement' - end + assert_current_path new_admin_conferences_dietary_requirement_path fill_in 'dietary_requirement_name', with: @dietary_requirement.name Percy.snapshot page, name: 'Dietary requirements form on create' click_on 'Save dietary requirement' @@ -44,9 +32,7 @@ class DietaryRequirementsTest < ApplicationSystemTestCase within "tr[data-dietary-requirement-id=\"#{@dietary_requirement.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @dietary_requirement.name - end + assert_current_path edit_admin_conferences_dietary_requirement_path(@dietary_requirement) Percy.snapshot page, name: 'Dietary requirements form on update' fill_in 'dietary_requirement_name', with: @dietary_requirement.name click_on 'Save dietary requirement' @@ -55,14 +41,29 @@ class DietaryRequirementsTest < ApplicationSystemTestCase Percy.snapshot page, name: 'Dietary requirements index on update' end - test 'destroying a dietary requirement' do + test 'updating a dietary requirement in a locale' do visit admin_conferences_dietary_requirements_path within "tr[data-dietary-requirement-id=\"#{@dietary_requirement.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @dietary_requirement.name + assert_current_path edit_admin_conferences_dietary_requirement_path(@dietary_requirement) + click_link 'British English' + click_link 'English' + assert_current_path edit_admin_conferences_dietary_requirement_path(@dietary_requirement, locale: :en) + Percy.snapshot page, name: 'Dietary requirements form on update in locale' + fill_in 'dietary_requirement_name', with: @dietary_requirement.name + click_on 'Save dietary requirement' + assert_current_path admin_conferences_dietary_requirements_path + assert_text 'Dietary requirement saved' + Percy.snapshot page, name: 'Dietary requirements index on update in locale' + end + + test 'destroying a dietary requirement' do + visit admin_conferences_dietary_requirements_path + within "tr[data-dietary-requirement-id=\"#{@dietary_requirement.id}\"]" do + click_on 'Edit' end + assert_current_path edit_admin_conferences_dietary_requirement_path(@dietary_requirement) accept_confirm "Are you sure you want to delete the dietary requirement #{@dietary_requirement.name}?" do click_on 'Permanently delete' Percy.snapshot page, name: 'Dietary requirements delete dialog' diff --git a/test/system/spina/admin/conferences/institutions_test.rb b/test/system/spina/admin/conferences/institutions_test.rb index d165f0fc..8b5dfaf0 100644 --- a/test/system/spina/admin/conferences/institutions_test.rb +++ b/test/system/spina/admin/conferences/institutions_test.rb @@ -9,29 +9,17 @@ class InstitutionsTest < ApplicationSystemTestCase setup do @institution = spina_admin_conferences_institutions :university_of_atlantis @empty_institution = spina_admin_conferences_institutions :empty_institution - @user = spina_users :joe - visit admin_login_path - within '.login-fields' do - fill_in 'email', with: @user.email - fill_in 'password', with: 'password' - end - click_on 'Login' end test 'visiting the index' do visit admin_conferences_institutions_path - assert_selector '.breadcrumbs' do - assert_text 'Institutions' - end Percy.snapshot page, name: 'Institutions index' end test 'creating an institution' do visit admin_conferences_institutions_path click_on 'New institution' - assert_selector '.breadcrumbs' do - assert_text 'New institution' - end + assert_current_path new_admin_conferences_institution_path fill_in 'institution_name', with: @institution.name fill_in 'institution_city', with: @institution.city click_on 'Choose image' @@ -50,9 +38,7 @@ class InstitutionsTest < ApplicationSystemTestCase within "tr[data-institution-id=\"#{@institution.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @institution.name - end + assert_current_path edit_admin_conferences_institution_path(@institution) Percy.snapshot page, name: 'Institutions form on update' fill_in 'institution_name', with: @institution.name fill_in 'institution_city', with: @institution.city @@ -66,14 +52,34 @@ class InstitutionsTest < ApplicationSystemTestCase Percy.snapshot page, name: 'Institutions index on update' end + test 'updating an institution in a locale' do + visit admin_conferences_institutions_path + within "tr[data-institution-id=\"#{@institution.id}\"]" do + click_on 'Edit' + end + assert_current_path edit_admin_conferences_institution_path(@institution) + click_link 'British English' + click_link 'English' + assert_current_path edit_admin_conferences_institution_path(@institution, locale: :en) + Percy.snapshot page, name: 'Institutions form on update in locale' + fill_in 'institution_name', with: @institution.name + fill_in 'institution_city', with: @institution.city + click_on 'Choose image' + within '.modal', visible: true, style: { display: 'block' } do + first('.media-picker-image').click + end + click_on 'Save institution' + assert_current_path admin_conferences_institutions_path + assert_text 'Institution saved' + Percy.snapshot page, name: 'Institutions index on update in locale' + end + test 'destroying an institution' do visit admin_conferences_institutions_path within "tr[data-institution-id=\"#{@empty_institution.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @empty_institution.name - end + assert_current_path edit_admin_conferences_institution_path(@empty_institution) accept_confirm "Are you sure you want to delete the institution #{@empty_institution.name}?" do click_on 'Permanently delete' Percy.snapshot page, name: 'Institutions delete dialog' diff --git a/test/system/spina/admin/conferences/presentation_attachment_types_test.rb b/test/system/spina/admin/conferences/presentation_attachment_types_test.rb index 2089139d..adea7697 100644 --- a/test/system/spina/admin/conferences/presentation_attachment_types_test.rb +++ b/test/system/spina/admin/conferences/presentation_attachment_types_test.rb @@ -8,29 +8,17 @@ module Conferences class PresentationAttachmentTypesTest < ApplicationSystemTestCase setup do @presentation_attachment_type = spina_admin_conferences_presentation_attachment_types :handout - @user = spina_users :joe - visit admin_login_path - within '.login-fields' do - fill_in 'email', with: @user.email - fill_in 'password', with: 'password' - end - click_on 'Login' end test 'visiting the index' do visit admin_conferences_presentation_attachment_types_path - assert_selector '.breadcrumbs' do - assert_text 'Presentation attachment types' - end Percy.snapshot page, name: 'Presentation attachment types index' end test 'creating a presentation attachment type' do visit admin_conferences_presentation_attachment_types_path click_on 'New presentation attachment type' - assert_selector '.breadcrumbs' do - assert_text 'New presentation attachment type' - end + assert_current_path new_admin_conferences_presentation_attachment_type_path fill_in 'presentation_attachment_type_name', with: @presentation_attachment_type.name Percy.snapshot page, name: 'Presentation attachment types form on create' click_on 'Save presentation attachment type' @@ -44,9 +32,7 @@ class PresentationAttachmentTypesTest < ApplicationSystemTestCase within "tr[data-presentation-attachment-type-id=\"#{@presentation_attachment_type.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @presentation_attachment_type.name - end + assert_current_path edit_admin_conferences_presentation_attachment_type_path(@presentation_attachment_type) Percy.snapshot page, name: 'Presentation attachment types form on update' fill_in 'presentation_attachment_type_name', with: @presentation_attachment_type.name click_on 'Save presentation attachment type' @@ -55,7 +41,7 @@ class PresentationAttachmentTypesTest < ApplicationSystemTestCase Percy.snapshot page, name: 'Presentation attachment types index on update' end - test 'destroying a presentation attachment type' do + test 'updating a presentation attachment type in a locale' do visit admin_conferences_presentation_attachment_types_path within "tr[data-presentation-attachment-type-id=\"#{@presentation_attachment_type.id}\"]" do click_on 'Edit' @@ -63,6 +49,24 @@ class PresentationAttachmentTypesTest < ApplicationSystemTestCase assert_selector '.breadcrumbs' do assert_text @presentation_attachment_type.name end + assert_current_path edit_admin_conferences_presentation_attachment_type_path(@presentation_attachment_type) + click_link 'British English' + click_link 'English' + assert_current_path edit_admin_conferences_presentation_attachment_type_path(@presentation_attachment_type, locale: :en) + Percy.snapshot page, name: 'Presentation attachment types form on update in locale' + fill_in 'presentation_attachment_type_name', with: @presentation_attachment_type.name + click_on 'Save presentation attachment type' + assert_current_path admin_conferences_presentation_attachment_types_path + assert_text 'Presentation attachment type saved' + Percy.snapshot page, name: 'Presentation attachment types index on update in locale' + end + + test 'destroying a presentation attachment type' do + visit admin_conferences_presentation_attachment_types_path + within "tr[data-presentation-attachment-type-id=\"#{@presentation_attachment_type.id}\"]" do + click_on 'Edit' + end + assert_current_path edit_admin_conferences_presentation_attachment_type_path(@presentation_attachment_type) accept_confirm "Are you sure you want to delete the presentation attachment type #{@presentation_attachment_type.name}" \ '?' do click_on 'Permanently delete' diff --git a/test/system/spina/admin/conferences/presentation_types_test.rb b/test/system/spina/admin/conferences/presentation_types_test.rb index bf6781c6..025c8c9a 100644 --- a/test/system/spina/admin/conferences/presentation_types_test.rb +++ b/test/system/spina/admin/conferences/presentation_types_test.rb @@ -9,29 +9,17 @@ class PresentationTypesTest < ApplicationSystemTestCase setup do @presentation_type = spina_admin_conferences_presentation_types :plenary_1 @empty_presentation_type = spina_admin_conferences_presentation_types :empty_presentation_type - @user = spina_users :joe - visit admin_login_path - within '.login-fields' do - fill_in 'email', with: @user.email - fill_in 'password', with: 'password' - end - click_on 'Login' end test 'visiting the index' do visit admin_conferences_presentation_types_path - assert_selector '.breadcrumbs' do - assert_text 'Presentation types' - end Percy.snapshot page, name: 'Presentation types index' end test 'creating a presentation type' do visit admin_conferences_presentation_types_path click_on 'New presentation type' - assert_selector '.breadcrumbs' do - assert_text 'New presentation type' - end + assert_current_path new_admin_conferences_presentation_type_path select @presentation_type.conference.name, from: 'presentation_type_conference_id' fill_in 'presentation_type_name', with: @presentation_type.name fill_in 'presentation_type_minutes', with: @presentation_type.minutes @@ -47,9 +35,7 @@ class PresentationTypesTest < ApplicationSystemTestCase within "tr[data-presentation-type-id=\"#{@presentation_type.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @presentation_type.name - end + assert_current_path edit_admin_conferences_presentation_type_path(@presentation_type) Percy.snapshot page, name: 'Presentation types form on update' select @presentation_type.conference.name, from: 'presentation_type_conference_id' fill_in 'presentation_type_name', with: @presentation_type.name @@ -60,14 +46,31 @@ class PresentationTypesTest < ApplicationSystemTestCase Percy.snapshot page, name: 'Presentation types index on update' end + test 'updating a presentation type in a locale' do + visit admin_conferences_presentation_types_path + within "tr[data-presentation-type-id=\"#{@presentation_type.id}\"]" do + click_on 'Edit' + end + assert_current_path edit_admin_conferences_presentation_type_path(@presentation_type) + click_link 'British English' + click_link 'English' + assert_current_path edit_admin_conferences_presentation_type_path(@presentation_type, locale: :en) + Percy.snapshot page, name: 'Presentation types form on update in locale' + select @presentation_type.conference.name, from: 'presentation_type_conference_id' + fill_in 'presentation_type_name', with: @presentation_type.name + fill_in 'presentation_type_minutes', with: @presentation_type.minutes + click_on 'Save presentation type' + assert_current_path admin_conferences_presentation_types_path + assert_text 'Presentation type saved' + Percy.snapshot page, name: 'Presentation types index on update in locale' + end + test 'destroying a presentation type' do visit admin_conferences_presentation_types_path within "tr[data-presentation-type-id=\"#{@empty_presentation_type.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @empty_presentation_type.name - end + assert_current_path edit_admin_conferences_presentation_type_path(@empty_presentation_type) accept_confirm "Are you sure you want to delete the presentation type #{@empty_presentation_type.name}?" do click_on 'Permanently delete' Percy.snapshot page, name: 'Presentation types delete dialog' diff --git a/test/system/spina/admin/conferences/presentations_test.rb b/test/system/spina/admin/conferences/presentations_test.rb index 9c71937f..d9ef46fd 100644 --- a/test/system/spina/admin/conferences/presentations_test.rb +++ b/test/system/spina/admin/conferences/presentations_test.rb @@ -8,29 +8,17 @@ module Conferences class PresentationsTest < ApplicationSystemTestCase setup do @presentation = spina_admin_conferences_presentations :asymmetry_and_antisymmetry - @user = spina_users :joe - visit admin_login_path - within '.login-fields' do - fill_in 'email', with: @user.email - fill_in 'password', with: 'password' - end - click_on 'Login' end test 'visiting the index' do visit admin_conferences_presentations_path - assert_selector '.breadcrumbs' do - assert_text 'Presentations' - end Percy.snapshot page, name: 'Presentations index' end test 'creating a presentation' do visit admin_conferences_presentations_path click_on 'New presentation' - assert_selector '.breadcrumbs' do - assert_text 'New presentation' - end + assert_current_path new_admin_conferences_presentation_path select @presentation.conference.name, from: 'conference_id' select @presentation.presentation_type.name, from: 'presentation_type_id' select @presentation.session.name, from: 'presentation_session_id' @@ -52,14 +40,12 @@ class PresentationsTest < ApplicationSystemTestCase Percy.snapshot page, name: 'Presentations index on create' end - test 'updating a presentation' do # rubocop:disable Metrics/BlockLength + test 'updating a presentation' do visit admin_conferences_presentations_path within "tr[data-presentation-id=\"#{@presentation.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @presentation.name - end + assert_current_path edit_admin_conferences_presentation_path(@presentation) Percy.snapshot page, name: 'Presentations form on update' select @presentation.conference.name, from: 'conference_id' select @presentation.presentation_type.name, from: 'presentation_type_id' @@ -82,14 +68,43 @@ class PresentationsTest < ApplicationSystemTestCase Percy.snapshot page, name: 'Presentations index on update' end - test 'destroying a presentation' do + test 'updating a presentation in a locale' do visit admin_conferences_presentations_path within "tr[data-presentation-id=\"#{@presentation.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @presentation.name + assert_current_path edit_admin_conferences_presentation_path(@presentation) + click_link 'British English' + click_link 'English' + assert_current_path edit_admin_conferences_presentation_path(@presentation, locale: :en) + Percy.snapshot page, name: 'Presentations form on update in locale' + select @presentation.conference.name, from: 'conference_id' + select @presentation.presentation_type.name, from: 'presentation_type_id' + select @presentation.session.name, from: 'presentation_session_id' + fill_in 'presentation_start_datetime', with: @presentation.start_datetime + fill_in 'presentation_title', with: @presentation.title + fill_in_rich_text_area 'presentation[abstract]', with: @presentation.abstract + @presentation.presenters.each { |presenter| check presenter.reversed_name_and_institution, allow_label_click: true } + within '.presentation_attachment' do + click_link class: %w[button button-link icon] + find_link(href: '#structure_form_pane_2').click + within '#structure_form_pane_2' do + select @presentation.attachments.second.name, from: 'presentation_attachments_attributes_2_attachment_type_id' + select @presentation.attachments.first.attachment.name, from: 'presentation_attachments_attributes_2_attachment_id' + end + end + click_on 'Save presentation' + assert_current_path admin_conferences_presentations_path + assert_text 'Presentation saved' + Percy.snapshot page, name: 'Presentations index on update in locale' + end + + test 'destroying a presentation' do + visit admin_conferences_presentations_path + within "tr[data-presentation-id=\"#{@presentation.id}\"]" do + click_on 'Edit' end + assert_current_path edit_admin_conferences_presentation_path(@presentation) accept_confirm "Are you sure you want to delete the presentation #{@presentation.name}?" do click_on 'Permanently delete' Percy.snapshot page, name: 'Presentations delete dialog' diff --git a/test/system/spina/admin/conferences/rooms_test.rb b/test/system/spina/admin/conferences/rooms_test.rb index c1ed8261..0a74a424 100644 --- a/test/system/spina/admin/conferences/rooms_test.rb +++ b/test/system/spina/admin/conferences/rooms_test.rb @@ -9,29 +9,17 @@ class RoomsTest < ApplicationSystemTestCase setup do @room = spina_admin_conferences_rooms :lecture_block_2 @empty_room = spina_admin_conferences_rooms :empty_room - @user = spina_users :joe - visit admin_login_path - within '.login-fields' do - fill_in 'email', with: @user.email - fill_in 'password', with: 'password' - end - click_on 'Login' end test 'visiting the index' do visit admin_conferences_rooms_path - assert_selector '.breadcrumbs' do - assert_text 'Rooms' - end Percy.snapshot page, name: 'Rooms index' end test 'creating a room' do visit admin_conferences_rooms_path click_on 'New room' - assert_selector '.breadcrumbs' do - assert_text 'New room' - end + assert_current_path new_admin_conferences_room_path select @room.institution.name, from: 'room_institution_id' fill_in 'room_building', with: @room.building fill_in 'room_number', with: @room.number @@ -47,9 +35,7 @@ class RoomsTest < ApplicationSystemTestCase within "tr[data-room-id=\"#{@room.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @room.name - end + assert_current_path edit_admin_conferences_room_path(@room) Percy.snapshot page, name: 'Rooms form on update' select @room.institution.name, from: 'room_institution_id' fill_in 'room_building', with: @room.building @@ -60,14 +46,31 @@ class RoomsTest < ApplicationSystemTestCase Percy.snapshot page, name: 'Rooms index on update' end + test 'updating a room in a locale' do + visit admin_conferences_rooms_path + within "tr[data-room-id=\"#{@room.id}\"]" do + click_on 'Edit' + end + assert_current_path edit_admin_conferences_room_path(@room) + click_link 'British English' + click_link 'English' + assert_current_path edit_admin_conferences_room_path(@room, locale: :en) + Percy.snapshot page, name: 'Rooms form on update in locale' + select @room.institution.name, from: 'room_institution_id' + fill_in 'room_building', with: @room.building + fill_in 'room_number', with: @room.number + click_on 'Save room' + assert_current_path admin_conferences_rooms_path + assert_text 'Room saved' + Percy.snapshot page, name: 'Rooms index on update in locale' + end + test 'destroying a room' do visit admin_conferences_rooms_path within "tr[data-room-id=\"#{@empty_room.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @empty_room.name - end + assert_current_path edit_admin_conferences_room_path(@empty_room) accept_confirm "Are you sure you want to delete the room #{@empty_room.name}?" do click_on 'Permanently delete' Percy.snapshot page, name: 'Rooms delete dialog' diff --git a/test/system/spina/admin/conferences/sessions_test.rb b/test/system/spina/admin/conferences/sessions_test.rb index 3d38c7ee..e28b18e9 100644 --- a/test/system/spina/admin/conferences/sessions_test.rb +++ b/test/system/spina/admin/conferences/sessions_test.rb @@ -9,29 +9,17 @@ class SessionsTest < ApplicationSystemTestCase setup do @session = spina_admin_conferences_sessions :oral_1_lecture_block_2_uoa_2017 @empty_session = spina_admin_conferences_sessions :empty_session - @user = spina_users :joe - visit admin_login_path - within '.login-fields' do - fill_in 'email', with: @user.email - fill_in 'password', with: 'password' - end - click_on 'Login' end test 'visiting the index' do visit admin_conferences_sessions_path - assert_selector '.breadcrumbs' do - assert_text 'Sessions' - end Percy.snapshot page, name: 'Sessions index' end test 'creating a session' do visit admin_conferences_sessions_path click_on 'New session' - assert_selector '.breadcrumbs' do - assert_text 'New session' - end + assert_current_path new_admin_conferences_session_path fill_in 'session_name', with: @session.name select @session.conference.name, from: 'conference_id' select @session.presentation_type.name, from: 'session_presentation_type_id' @@ -49,9 +37,7 @@ class SessionsTest < ApplicationSystemTestCase within "tr[data-session-id=\"#{@session.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @session.name - end + assert_current_path edit_admin_conferences_session_path(@session) Percy.snapshot page, name: 'Sessions form on update' fill_in 'session_name', with: @session.name select @session.conference.name, from: 'conference_id' @@ -64,14 +50,33 @@ class SessionsTest < ApplicationSystemTestCase Percy.snapshot page, name: 'Sessions index on update' end + test 'updating a session in a locale' do + visit admin_conferences_sessions_path + within "tr[data-session-id=\"#{@session.id}\"]" do + click_on 'Edit' + end + assert_current_path edit_admin_conferences_session_path(@session) + click_link 'British English' + click_link 'English' + assert_current_path edit_admin_conferences_session_path(@session, locale: :en) + Percy.snapshot page, name: 'Sessions form on update in locale' + fill_in 'session_name', with: @session.name + select @session.conference.name, from: 'conference_id' + select @session.presentation_type.name, from: 'session_presentation_type_id' + select @session.institution.name, from: 'institution_id' + select @session.room.name, from: 'session_room_id' + click_on 'Save session' + assert_current_path admin_conferences_sessions_path + assert_text 'Session saved' + Percy.snapshot page, name: 'Sessions index on update in locale' + end + test 'destroying a session' do visit admin_conferences_sessions_path within "tr[data-session-id=\"#{@empty_session.id}\"]" do click_on 'Edit' end - assert_selector '.breadcrumbs' do - assert_text @empty_session.name - end + assert_current_path edit_admin_conferences_session_path(@empty_session) accept_confirm "Are you sure you want to delete the session #{@empty_session.name}?" do click_on 'Permanently delete' Percy.snapshot page, name: 'Sessions delete dialog'