Skip to content

Commit

Permalink
Merge pull request #6548 from samvera/updates_select_work_type_modal_…
Browse files Browse the repository at this point in the history
…html_erb_spec

Adds work class swapping and refactoring to `spec/views/shared/select_work_type_modal.html.erb_spec.rb`.
  • Loading branch information
dlpierce authored Dec 14, 2023
2 parents 95132dd + 2b3afa6 commit dd9a875
Showing 1 changed file with 36 additions and 24 deletions.
60 changes: 36 additions & 24 deletions spec/views/shared/select_work_type_modal.html.erb_spec.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
# frozen_string_literal: true
RSpec.describe 'shared/_select_work_type_modal.html.erb', type: :view do
let(:presenter) { instance_double Hyrax::SelectTypeListPresenter }
let(:row1) do
Hyrax::SelectTypePresenter.new(GenericWork)
let(:row1) { Hyrax::SelectTypePresenter.new(GenericWork) }
let(:row2) { Hyrax::SelectTypePresenter.new(Hyrax.config.disable_wings ? Monograph : NamespacedWorks::NestedWork) }

let(:expected_selector_collection_id_present) do
'input[type="radio"][data-single="/concern/generic_works/new?add_works_to_collection=1"][data-batch="/batch_uploads/new?add_works_to_collection=1&payload_concern=GenericWork"]'
end
let(:dassie_expected_selector) do
'input[type="radio"][data-single="/concern/namespaced_works/nested_works/new?add_works_to_collection=1"]' \
'[data-batch="/batch_uploads/new?add_works_to_collection=1&payload_concern=NamespacedWorks%3A%3ANestedWork"]'
end
let(:row2) do
Hyrax::SelectTypePresenter.new(NamespacedWorks::NestedWork)
let(:koppie_expected_selector) do
'input[type="radio"][data-single="/concern/monographs/new?add_works_to_collection=1"][data-batch="/batch_uploads/new?add_works_to_collection=1&payload_concern=Monograph"]'
end

before do
Expand All @@ -14,39 +21,44 @@
allow(row2).to receive(:name).and_return('Nested Work')
end

context 'when no collections id' do
before do
render 'shared/select_work_type_modal', create_work_presenter: presenter
shared_context('with a rendered modal') { before { render 'shared/select_work_type_modal', create_work_presenter: presenter } }

shared_examples('tests for expected selectors when collection id present') do
it 'draws the modal with collection id' do
expect(rendered).to(have_selector(expected_selector_collection_id_present))
expect(rendered).to(have_selector(dassie_expected_selector)) unless Hyrax.config.disable_wings
expect(rendered).to(have_selector(koppie_expected_selector)) if Hyrax.config.disable_wings
end
end

context 'when no collections id' do
include_context 'with a rendered modal'

it 'draws the modal' do
expect(rendered).to have_selector '#worktypes-to-create.modal'
expect(rendered).to have_content 'Generic Work'
expect(rendered).to have_content 'Nested Work'
expect(rendered).to have_selector 'input[type="radio"][data-single="/concern/generic_works/new"][data-batch="/batch_uploads/new?payload_concern=GenericWork"]'
expect(rendered).to have_selector 'input[type="radio"][data-single="/concern/namespaced_works/nested_works/new"][data-batch="/batch_uploads/new?payload_concern=NamespacedWorks%3A%3ANestedWork"]'
unless Hyrax.config.disable_wings
expect(rendered).to(have_selector(
'input[type="radio"][data-single="/concern/namespaced_works/nested_works/new"][data-batch="/batch_uploads/new?payload_concern=NamespacedWorks%3A%3ANestedWork"]'
))
end
expect(rendered).to have_selector 'input[type="radio"][data-single="/concern/monographs/new"][data-batch="/batch_uploads/new?payload_concern=Monograph"]' if Hyrax.config.disable_wings
end
end

context 'when collection id exists' do
before do
allow(view).to receive(:params).and_return(id: '1', controller: 'hyrax/dashboard/collections')
render 'shared/select_work_type_modal', create_work_presenter: presenter
end
it 'draws the modal with collection id' do
expect(rendered).to have_selector 'input[type="radio"][data-single="/concern/generic_works/new?add_works_to_collection=1"][data-batch="/batch_uploads/new?add_works_to_collection=1&payload_concern=GenericWork"]' # rubocop:disable Layout/LineLength
expect(rendered).to have_selector 'input[type="radio"][data-single="/concern/namespaced_works/nested_works/new?add_works_to_collection=1"][data-batch="/batch_uploads/new?add_works_to_collection=1&payload_concern=NamespacedWorks%3A%3ANestedWork"]' # rubocop:disable Layout/LineLength
end
before { allow(view).to receive(:params).and_return(id: '1', controller: 'hyrax/dashboard/collections') }
include_context 'with a rendered modal'

include_examples 'tests for expected selectors when collection id present'
end

context 'when add_works_to_collection exists' do
before do
allow(view).to receive(:params).and_return(add_works_to_collection: '1')
render 'shared/select_work_type_modal', create_work_presenter: presenter
end
it 'draws the modal with collection id' do
expect(rendered).to have_selector 'input[type="radio"][data-single="/concern/generic_works/new?add_works_to_collection=1"][data-batch="/batch_uploads/new?add_works_to_collection=1&payload_concern=GenericWork"]' # rubocop:disable Layout/LineLength
expect(rendered).to have_selector 'input[type="radio"][data-single="/concern/namespaced_works/nested_works/new?add_works_to_collection=1"][data-batch="/batch_uploads/new?add_works_to_collection=1&payload_concern=NamespacedWorks%3A%3ANestedWork"]' # rubocop:disable Layout/LineLength
end
before { allow(view).to receive(:params).and_return(add_works_to_collection: '1') }
include_context 'with a rendered modal'

include_examples 'tests for expected selectors when collection id present'
end
end

0 comments on commit dd9a875

Please sign in to comment.