From 76aac0648d1f16965583948fb1906bcb64a07f76 Mon Sep 17 00:00:00 2001 From: Daniel Pierce Date: Fri, 10 Nov 2023 03:01:20 -0500 Subject: [PATCH] Adapt more record view specs for valkyrie same way as subject Move subject's shared examples inside the top level describe with a more distinct name. --- .../edit_fields/_description.html.erb_spec.rb | 110 ++++++++++-------- .../edit_fields/_language.html.erb_spec.rb | 20 +++- .../edit_fields/_subject.html.erb_spec.rb | 15 ++- 3 files changed, 87 insertions(+), 58 deletions(-) diff --git a/spec/views/records/edit_fields/_description.html.erb_spec.rb b/spec/views/records/edit_fields/_description.html.erb_spec.rb index 4c1c672ab2..36084c60f2 100644 --- a/spec/views/records/edit_fields/_description.html.erb_spec.rb +++ b/spec/views/records/edit_fields/_description.html.erb_spec.rb @@ -1,7 +1,59 @@ # frozen_string_literal: true RSpec.describe 'records/edit_fields/_description.html.erb', type: :view do - let(:work) { GenericWork.new } - let(:form) { Hyrax::GenericWorkForm.new(work, nil, controller) } + RSpec.shared_examples 'description field behaviors' do + context "when single valued" do + before do + expect(form).to receive(:multiple?).and_return(false) + end + + context "when not required" do + before do + expect(form).to receive(:required?).and_return(false) + end + it 'has text area' do + render inline: form_template + expect(rendered).to have_selector('textarea[class="form-control text optional"]') + end + end + + context "when required" do + before do + expect(form).to receive(:required?).and_return(true) + end + it 'has text area' do + render inline: form_template + expect(rendered).to have_selector('textarea[class="form-control text required"]') + end + end + end + + context "when multi valued" do + before do + expect(form).to receive(:multiple?).and_return(true) + end + + context "when not required" do + before do + expect(form).to receive(:required?).and_return(false) + end + it 'has text area' do + render inline: form_template + expect(rendered).to have_selector('textarea.string.multi_value.optional.form-control.multi-text-field') + end + end + + context "when required" do + before do + expect(form).to receive(:required?).and_return(true) + end + it 'has text area' do + render inline: form_template + expect(rendered).to have_selector('textarea.string.multi_value.required.form-control.multi-text-field') + end + end + end + end + let(:form_template) do %( <%= simple_form_for [main_app, @form] do |f| %> @@ -14,55 +66,17 @@ assign(:form, form) end - context "when single valued" do - before do - expect(form).to receive(:multiple?).and_return(false) - end + context 'ActiveFedora', :active_fedora do + let(:work) { GenericWork.new } + let(:form) { Hyrax::GenericWorkForm.new(work, nil, controller) } - context "when not required" do - before do - expect(form).to receive(:required?).and_return(false) - end - it 'has text area' do - render inline: form_template - expect(rendered).to have_selector('textarea[class="form-control text optional"]') - end - end - - context "when required" do - before do - expect(form).to receive(:required?).and_return(true) - end - it 'has text area' do - render inline: form_template - expect(rendered).to have_selector('textarea[class="form-control text required"]') - end - end + include_examples 'description field behaviors' end - context "when multi valued" do - before do - expect(form).to receive(:multiple?).and_return(true) - end - - context "when not required" do - before do - expect(form).to receive(:required?).and_return(false) - end - it 'has text area' do - render inline: form_template - expect(rendered).to have_selector('textarea[class="string multi_value optional generic_work_description form-control multi-text-field"]') - end - end + context 'Valkyrie' do + let(:work) { Monograph.new } + let(:form) { Hyrax::Forms::ResourceForm.for(work) } - context "when required" do - before do - expect(form).to receive(:required?).and_return(true) - end - it 'has text area' do - render inline: form_template - expect(rendered).to have_selector('textarea[class="string multi_value required generic_work_description form-control multi-text-field"]') - end - end + include_examples 'description field behaviors' end end diff --git a/spec/views/records/edit_fields/_language.html.erb_spec.rb b/spec/views/records/edit_fields/_language.html.erb_spec.rb index 32717f86fc..4b1072cfd9 100644 --- a/spec/views/records/edit_fields/_language.html.erb_spec.rb +++ b/spec/views/records/edit_fields/_language.html.erb_spec.rb @@ -1,5 +1,11 @@ # frozen_string_literal: true RSpec.describe 'records/edit_fields/_language.html.erb', type: :view do + RSpec.shared_examples 'check for language autocomplete url' do + it 'has url for autocomplete service' do + expect(rendered).to have_selector('input[data-autocomplete-url="/authorities/search/local/languages"][data-autocomplete="language"]') + end + end + let(:work) { GenericWork.new } let(:form) { Hyrax::GenericWorkForm.new(work, nil, controller) } let(:form_template) do @@ -15,7 +21,17 @@ render inline: form_template end - it 'has url for autocomplete service' do - expect(rendered).to have_selector('input[data-autocomplete-url="/authorities/search/local/languages"][data-autocomplete="language"]') + context 'ActiveFedora', :active_fedora do + let(:work) { GenericWork.new } + let(:form) { Hyrax::GenericWorkForm.new(work, nil, controller) } + + include_examples 'check for language autocomplete url' + end + + context 'Valkyrie' do + let(:work) { Monograph.new } + let(:form) { Hyrax::Forms::ResourceForm.for(work) } + + include_examples 'check for language autocomplete url' end end diff --git a/spec/views/records/edit_fields/_subject.html.erb_spec.rb b/spec/views/records/edit_fields/_subject.html.erb_spec.rb index 97a5b399f9..2a5cc0a062 100644 --- a/spec/views/records/edit_fields/_subject.html.erb_spec.rb +++ b/spec/views/records/edit_fields/_subject.html.erb_spec.rb @@ -1,12 +1,11 @@ # frozen_string_literal: true - -RSpec.shared_examples 'check for autocomplete url' do - it 'has url for autocomplete service' do - expect(rendered).to have_selector('input[data-autocomplete-url="/authorities/search/local/subjects"][data-autocomplete="subject"]') +RSpec.describe 'records/edit_fields/_subject.html.erb', type: :view do + RSpec.shared_examples 'check for subject autocomplete url' do + it 'has url for autocomplete service' do + expect(rendered).to have_selector('input[data-autocomplete-url="/authorities/search/local/subjects"][data-autocomplete="subject"]') + end end -end -RSpec.describe 'records/edit_fields/_subject.html.erb', type: :view do let(:form_template) do %( <%= simple_form_for [main_app, @form] do |f| %> @@ -24,13 +23,13 @@ let(:work) { GenericWork.new } let(:form) { Hyrax::GenericWorkForm.new(work, nil, controller) } - include_examples 'check for autocomplete url' + include_examples 'check for subject autocomplete url' end context 'Valkyrie' do let(:work) { Monograph.new } let(:form) { Hyrax::Forms::ResourceForm.for(work) } - include_examples 'check for autocomplete url' + include_examples 'check for subject autocomplete url' end end