Files
openfoodnetwork/spec/support/tom_select_helper.rb
Rachel Arnould 68c7d8f9f5 Merge pull request #13934 from chahmedejaz/bugfix/13827-tag-filters-reset-upon-product-update
Tag filters are reset after updating a product
2026-02-24 10:20:11 +01:00

59 lines
2.0 KiB
Ruby

# frozen_string_literal: true
module TomSelectHelper
def tomselect_multiselect(value, options)
tomselect_wrapper = page.find_field(options[:from]).sibling(".ts-wrapper")
tomselect_wrapper.find(".ts-control").click
tomselect_wrapper.find(:css, ".ts-dropdown.multi .ts-dropdown-content .option",
text: value).click
# Close the dropdown
page.find("body").click
end
def tomselect_search_and_select(value, options)
tomselect_wrapper = page.find_field(options[:from]).sibling(".ts-wrapper")
tomselect_wrapper.find(".ts-control").click
# Use send_keys as setting the value directly doesn't trigger the search
tomselect_wrapper.find(".ts-dropdown input.dropdown-input").send_keys(value)
tomselect_wrapper.find(".ts-dropdown .ts-dropdown-content .option.active", text: value).click
end
def tomselect_select(value, options)
tomselect_wrapper = page.find_field(options[:from]).sibling(".ts-wrapper")
tomselect_wrapper.find(".ts-control").click
tomselect_wrapper.find(".ts-dropdown .ts-dropdown-content .option", text: value).click
end
def open_tomselect_to_validate!(page, field_name)
tomselect_wrapper = page.find_field(field_name).sibling(".ts-wrapper")
tomselect_wrapper.find(".ts-control").click # open the dropdown
raise "Please pass the block for expectations" unless block_given?
# execute block containing expectations
yield
tomselect_wrapper.find(
".ts-dropdown .ts-dropdown-content .option.active",
).click # close the dropdown by selecting the already selected value
end
def expect_tomselect_selected_options(from, *options)
tomselect_control = page
.find("[name='#{from}']")
.sibling(".ts-wrapper")
.find('.ts-control')
within(tomselect_control) do
# options in case of we want to expect multiselect options
options.each do |option|
expect(page).to have_css(
"div[data-ts-item]",
text: option
)
end
end
end
end