Module: Alchemy::TestSupport::CapybaraHelpers

Defined in:
lib/alchemy/test_support/capybara_helpers.rb

Instance Method Summary collapse

Instance Method Details

#click_button_with_label(label) ⇒ Object



49
50
51
52
53
54
# File 'lib/alchemy/test_support/capybara_helpers.rb', line 49

def click_button_with_label(label)
  label = find("label", text: label)
  within label.first(:xpath, ".//..") do
    first("button").click
  end
end

#select2(value, options) ⇒ Object

Select2 capybara helper



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/alchemy/test_support/capybara_helpers.rb', line 7

def select2(value, options)
  label = find_label_by_text(options[:from])

  select2_anchor_selector = ".select2-container a"

  if label.has_css?(select2_anchor_selector)
    label.find(select2_anchor_selector).click
  else
    within label.find(:xpath, "..") do
      find(select2_anchor_selector).click
    end
  end

  within_entire_page do
    page.find(
      "div.select2-result-label",
      text: /#{Regexp.escape(value)}/i, match: :prefer_exact
    ).click
  end
end

#select2_search(value, options) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/alchemy/test_support/capybara_helpers.rb', line 28

def select2_search(value, options)
  if options[:from]
    label = find_label_by_text(options[:from])
    within label.first(:xpath, ".//..") do
      options[:from] = "##{find(".select2-container")["id"]}"
    end
  elsif options[:element_id] && options[:ingredient_role]
    container_id = find("#element_#{options[:element_id]} [data-ingredient-role='#{options[:ingredient_role]}'] .select2-container")["id"]
    options[:from] = "##{container_id}"
  end

  find("#{options[:from]}:not(.select2-container-disabled):not(.select2-offscreen)").click

  within_entire_page do
    find("input.select2-input.select2-focused").set(value)
    expect(page).to have_selector(".select2-result-label", visible: true)
    find("div.select2-result-label", text: /#{Regexp.escape(value)}/i, match: :prefer_exact).click
    expect(page).not_to have_selector(".select2-result-label")
  end
end