Module: Capybara::ScopesPicker

Includes:
DataPicker
Defined in:
lib/decidim/dev/test/rspec_support/capybara_scopes_picker.rb

Instance Method Summary collapse

Methods included from DataPicker

#select_data_picker

Instance Method Details

#scope_pick(scope_picker, scope) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/decidim/dev/test/rspec_support/capybara_scopes_picker.rb', line 27

def scope_pick(scope_picker, scope)
  data_picker = scope_picker.data_picker
  # use scope_repick to change single scope picker selected scope
  expect(data_picker).to have_selector(".picker-values:empty", visible: false) if data_picker.has_css?(".picker-single")

  expect(data_picker).to have_selector(".picker-prompt")
  data_picker.find(".picker-prompt").click

  scope_picker_browse_scopes(scope.part_of_scopes) if scope
  data_picker_pick_current

  expect(scope_picker).to have_scope_picked(scope)
end

#scope_repick(scope_picker, old_scope, new_scope) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/decidim/dev/test/rspec_support/capybara_scopes_picker.rb', line 41

def scope_repick(scope_picker, old_scope, new_scope)
  data_picker = scope_picker.data_picker

  expect(data_picker).to have_selector(".picker-values div input[value='#{old_scope&.id || scope_picker.global_value}']", visible: false)
  data_picker.find(:xpath, "//div[contains(@class,'picker-values')]/div/input[@value='#{old_scope&.id || scope_picker.global_value}']/../a").click

  # browse to lowest common parent between old and new scope
  parent_scope = (old_scope.part_of_scopes & new_scope.part_of_scopes).last

  scope_picker_browse_scope(parent_scope, back: true)
  scope_picker_browse_scopes(new_scope.part_of_scopes - old_scope.part_of_scopes)
  data_picker_pick_current

  expect(scope_picker).to have_scope_picked(new_scope)
end

#scope_unpick(scope_picker, scope) ⇒ Object



57
58
59
60
61
62
63
64
# File 'lib/decidim/dev/test/rspec_support/capybara_scopes_picker.rb', line 57

def scope_unpick(scope_picker, scope)
  data_picker = scope_picker.data_picker

  expect(data_picker).to have_selector(".picker-values div input[value='#{scope&.id || scope_picker.global_value}']", visible: false)
  data_picker.find(".picker-values div input[value='#{scope&.id || scope_picker.global_value}']").click

  expect(scope_picker).to have_scope_not_picked(scope)
end