Files
grecia/spec/features/admin/legislation/proposals_spec.rb
Javi Martín 0945f046a3 Avoid using xpath in specs
Using xpath is usually harder to read and more fragile.
2018-10-04 16:31:00 +02:00

86 lines
3.5 KiB
Ruby

require 'rails_helper'
feature 'Admin legislation processes' do
background do
admin = create(:administrator)
login_as(admin.user)
end
context "Index" do
scenario 'Displaying legislation proposals' do
proposal = create(:legislation_proposal, cached_votes_up: 10)
visit admin_legislation_process_proposals_path(proposal.legislation_process_id)
within "#legislation_proposal_#{proposal.id}" do
expect(page).to have_content(proposal.title)
expect(page).to have_content(proposal.id)
expect(page).to have_content(proposal.cached_votes_up)
expect(page).to have_content('Select')
end
end
scenario 'Selecting legislation proposals', :js do
proposal = create(:legislation_proposal, cached_votes_up: 10)
visit admin_legislation_process_proposals_path(proposal.legislation_process_id)
click_link 'Select'
within "#legislation_proposal_#{proposal.id}" do
expect(page).to have_content('Selected')
end
end
scenario 'Sorting legislation proposals by title', js: true do
process = create(:legislation_process)
create(:legislation_proposal, title: 'bbbb', legislation_process_id: process.id)
create(:legislation_proposal, title: 'aaaa', legislation_process_id: process.id)
create(:legislation_proposal, title: 'cccc', legislation_process_id: process.id)
visit admin_legislation_process_proposals_path(process.id)
select "Title", from: "order-selector-participation"
within('#legislation_proposals_list') do
within all('.legislation_proposal')[0] { expect(page).to have_content('aaaa') }
within all('.legislation_proposal')[1] { expect(page).to have_content('bbbb') }
within all('.legislation_proposal')[2] { expect(page).to have_content('cccc') }
end
end
scenario 'Sorting legislation proposals by supports', js: true do
process = create(:legislation_process)
create(:legislation_proposal, cached_votes_up: 10, legislation_process_id: process.id)
create(:legislation_proposal, cached_votes_up: 30, legislation_process_id: process.id)
create(:legislation_proposal, cached_votes_up: 20, legislation_process_id: process.id)
visit admin_legislation_process_proposals_path(process.id)
select "Supports", from: "order-selector-participation"
within('#legislation_proposals_list') do
within all('.legislation_proposal')[0] { expect(page).to have_content('30') }
within all('.legislation_proposal')[1] { expect(page).to have_content('20') }
within all('.legislation_proposal')[2] { expect(page).to have_content('10') }
end
end
scenario 'Sorting legislation proposals by Id', js: true do
process = create(:legislation_process)
proposal1 = create(:legislation_proposal, title: 'bbbb', legislation_process_id: process.id)
proposal2 = create(:legislation_proposal, title: 'aaaa', legislation_process_id: process.id)
proposal3 = create(:legislation_proposal, title: 'cccc', legislation_process_id: process.id)
visit admin_legislation_process_proposals_path(process.id, order: :title)
select "Id", from: "order-selector-participation"
within('#legislation_proposals_list') do
within all('.legislation_proposal')[0] { expect(page).to have_content(proposal1.id) }
within all('.legislation_proposal')[1] { expect(page).to have_content(proposal2.id) }
within all('.legislation_proposal')[2] { expect(page).to have_content(proposal3.id) }
end
end
end
end