Files
growstuff/spec/features/shared_examples/crop_suggest.rb
Daniel O'Connor 5d112e9134 Rubocop: Capybara/RSpec/HaveSelector (#4539)
* Rubocop: Capybara/RSpec/HaveSelector

* Rubocop: Capybara/RSpec/HaveSelector
2026-04-23 22:45:58 +09:30

76 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
shared_examples "crop suggest" do |resource|
let!(:pea) { create(:crop, name: 'pea') }
let!(:pear) { create(:pear) }
let!(:tomato) { create(:tomato) }
let!(:roma) { create(:roma) }
it "placeholder text in crop auto suggest field" do
expect(page).to have_css("input[placeholder='e.g. lettuce']")
end
it "typing in the crop name displays suggestions" do
within "form#new_#{resource}" do
fill_autocomplete "crop", with: "pe"
end
expect(page).to have_no_content("pear")
expect(page).to have_no_content("pea")
within "form#new_#{resource}" do
fill_autocomplete "crop", with: "pea"
end
expect(page).to have_content("pear")
expect(page).to have_content("pea")
within "form#new_#{resource}" do
fill_autocomplete "crop", with: "pear"
end
expect(page).to have_content("pear")
end
it "selecting crop from dropdown" do
within "form#new_#{resource}" do
fill_autocomplete "crop", with: "pear"
end
select_from_autocomplete("pear")
expect(page).to have_css("input##{resource}_crop_id[value='#{pear.id}']", visible: false)
end
it "Typing and pausing does not affect input" do
within "form#new_#{resource}" do
fill_autocomplete "crop", with: "pea"
end
expect(page).to have_content("pear")
expect(find_field("crop").value).to eq("pea")
end
it "Searching for a crop casts a wide net on results" do
within "form#new_#{resource}" do
fill_autocomplete "crop", with: "tom"
end
expect(page).to have_content("tomato")
expect(page).to have_content("roma tomato")
end
it "Submitting a crop that doesn't exist in the database produces a meaningful error" do
within "form#new_#{resource}" do
fill_autocomplete "crop", with: "Ryan Gosling"
# Some forms require additional selections before submission.
choose plant_part.name if resource == "harvest"
click_button "Save"
end
expect(page).to have_content("Crop must be present and exist in our database")
end
end