Skip to content

Commit 4f070a8

Browse files
committed
test: proposals picker test helpers updated & moved to proposals module
1 parent f611915 commit 4f070a8

7 files changed

Lines changed: 66 additions & 56 deletions

File tree

decidim-accountability/spec/shared/manage_results_examples.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
ca: "El meu nou títol"
2828
)
2929

30-
proposal_pick(select_data_picker(:result_proposals, multiple: true), proposals.last)
30+
proposals_pick(select_data_picker(:result_proposals, multiple: true), proposals.last(2))
3131

3232
find("*[type=submit]").click
3333
end
@@ -58,7 +58,7 @@
5858
ca: "Descripció més llarga"
5959
)
6060

61-
proposal_pick(select_data_picker(:result_proposals, multiple: true), proposals.first)
61+
proposals_pick(select_data_picker(:result_proposals, multiple: true), proposals.first(2))
6262
scope_pick(select_data_picker(:result_decidim_scope_id), scope)
6363
select translated(category.name), from: :result_decidim_category_id
6464

decidim-accountability/spec/system/admin_manages_accountability_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# frozen_string_literal: true
22

33
require "spec_helper"
4+
require "decidim/proposals/test/capybara_proposals_picker"
45

56
describe "Admin manages accountability", type: :system do
67
let(:manifest_name) { "accountability" }

decidim-dev/lib/decidim/dev/test/rspec_support/capybara_data_picker.rb

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ def select_data_picker(id, multiple: nil, global_value: "")
66
Struct.new(:data_picker, :global_value).new(find_data_picker(id, multiple: multiple), global_value)
77
end
88

9-
private
10-
119
def find_data_picker(id, multiple: nil)
1210
if multiple.nil?
1311
expect(page).to have_selector("div.data-picker##{id}")
@@ -22,5 +20,17 @@ def data_picker_pick_current
2220
expect(body).to have_selector("#data_picker-modal .picker-footer a[data-picker-choose]")
2321
body.find("#data_picker-modal .picker-footer a[data-picker-choose]").click
2422
end
23+
24+
def data_picker_choose_value(value)
25+
body = find(:xpath, "//body")
26+
expect(body).to have_selector("#data_picker-modal input[data-picker-choose][type=checkbox][value=\"#{value}\"]")
27+
body.find("#data_picker-modal input[data-picker-choose][type=checkbox][value=\"#{value}\"]").click
28+
end
29+
30+
def data_picker_close
31+
body = find(:xpath, "//body")
32+
expect(body).to have_selector("#data_picker-modal .picker-footer a[data-close]")
33+
body.find("#data_picker-modal .picker-footer a[data-close]").click
34+
end
2535
end
2636
end

decidim-dev/lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb

Lines changed: 0 additions & 51 deletions
This file was deleted.

decidim-meetings/spec/shared/manage_meetings_examples.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@
403403
fill_in :close_meeting_attendees_count, with: 12
404404
fill_in :close_meeting_contributions_count, with: 44
405405
fill_in :close_meeting_attending_organizations, with: "Neighbours Association, Group of People Complaining About Something and Other People"
406-
select decidim_html_escape(proposals.first.title), from: :close_meeting_proposal_ids
406+
proposals_pick(select_data_picker(:close_meeting_proposal_ids, multiple: true), proposals.first(2))
407407
click_button "Close"
408408
end
409409

decidim-meetings/spec/system/admin_manages_meetings_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# frozen_string_literal: true
22

33
require "spec_helper"
4+
require "decidim/proposals/test/capybara_proposals_picker"
45

56
describe "Admin manages meetings", type: :system, serves_map: true do
67
let(:manifest_name) { "meetings" }
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# frozen_string_literal: true
2+
3+
require "decidim/dev/test/rspec_support/capybara_data_picker"
4+
5+
module Capybara
6+
module ProposalsPicker
7+
include DataPicker
8+
9+
RSpec::Matchers.define :have_proposals_picked do |expected|
10+
match do |proposals_picker|
11+
data_picker = proposals_picker.data_picker
12+
13+
expected.each do |proposal|
14+
expect(data_picker).to have_selector(".picker-values div input[value='#{proposal.id}']", visible: false)
15+
expect(data_picker).to have_selector(:xpath, "//div[contains(@class,'picker-values')]/div/a[text()[contains(.,'#{proposal.title}')]]")
16+
end
17+
end
18+
end
19+
20+
RSpec::Matchers.define :have_proposals_not_picked do |expected|
21+
match do |proposals_picker|
22+
data_picker = proposals_picker.data_picker
23+
24+
expected.each do |proposal|
25+
expect(data_picker).not_to have_selector(".picker-values div input[value='#{proposal.id}']", visible: false)
26+
expect(data_picker).not_to have_selector(:xpath, "//div[contains(@class,'picker-values')]/div/a[text()[contains(.,'#{proposal.title}')]]")
27+
end
28+
end
29+
end
30+
31+
def proposals_pick(proposals_picker, proposals)
32+
data_picker = proposals_picker.data_picker
33+
34+
expect(data_picker).to have_selector(".picker-prompt")
35+
data_picker.find(".picker-prompt").click
36+
37+
proposals.each do |proposal|
38+
data_picker_choose_value(proposal.id)
39+
end
40+
data_picker_close
41+
42+
expect(proposals_picker).to have_proposals_picked(proposals)
43+
end
44+
end
45+
end
46+
47+
RSpec.configure do |config|
48+
config.include Capybara::ProposalsPicker, type: :system
49+
end

0 commit comments

Comments
 (0)