Skip to content

Commit

Permalink
Adapt more record view specs for valkyrie same way as subject
Browse files Browse the repository at this point in the history
Move subject's shared examples inside the top level describe with a more distinct name.
  • Loading branch information
dlpierce committed Nov 10, 2023
1 parent 8d7b0ff commit 76aac06
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 58 deletions.
110 changes: 62 additions & 48 deletions spec/views/records/edit_fields/_description.html.erb_spec.rb
Original file line number Diff line number Diff line change
@@ -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| %>
Expand All @@ -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
20 changes: 18 additions & 2 deletions spec/views/records/edit_fields/_language.html.erb_spec.rb
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
15 changes: 7 additions & 8 deletions spec/views/records/edit_fields/_subject.html.erb_spec.rb
Original file line number Diff line number Diff line change
@@ -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| %>
Expand All @@ -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

0 comments on commit 76aac06

Please sign in to comment.