refactors repetitive declarations out of ballots_spec

This commit is contained in:
kikito
2016-12-25 20:29:43 +01:00
parent f9045cf95a
commit a0d79992df

View File

@@ -6,6 +6,9 @@ feature 'Ballots' do
let!(:budget) { create(:budget, phase: "balloting") } let!(:budget) { create(:budget, phase: "balloting") }
let!(:group) { create(:budget_group, budget: budget, name: "Group 1") } let!(:group) { create(:budget_group, budget: budget, name: "Group 1") }
let!(:heading) { create(:budget_heading, group: group, name: "Heading 1", price: 1000000) } let!(:heading) { create(:budget_heading, group: group, name: "Heading 1", price: 1000000) }
let!(:states) { create(:budget_group, budget: budget, name: "States") }
let!(:california) { create(:budget_heading, group: states, name: "California", price: 1000) }
let!(:new_york) { create(:budget_heading, group: states, name: "New York") }
context "Voting" do context "Voting" do
@@ -242,63 +245,59 @@ feature 'Ballots' do
end end
context "Groups" do context "Groups" do
let!(:districts_group) { create(:budget_group, budget: budget, name: "Districts") }
let!(:california_heading) { create(:budget_heading, group: districts_group, name: "California") }
let!(:new_york_heading) { create(:budget_heading, group: districts_group, name: "New York") }
let!(:investment) { create(:budget_investment, :selected, heading: california_heading) }
background do let!(:investment) { create(:budget_investment, :selected, heading: california) }
login_as(user)
end background { login_as(user) }
scenario 'Select my heading', :js do scenario 'Select my heading', :js do
visit budget_path(budget) visit budget_path(budget)
click_link "Districts" click_link "States"
click_link "California" click_link "California"
add_to_ballot(investment) add_to_ballot(investment)
visit budget_path(budget) visit budget_path(budget)
click_link "Districts" click_link "States"
expect(page).to have_content "California" expect(page).to have_content "California"
expect(page).to have_css("#budget_heading_#{california_heading.id}.active") expect(page).to have_css("#budget_heading_#{california.id}.active")
end end
scenario 'Change my heading', :js do scenario 'Change my heading', :js do
investment1 = create(:budget_investment, :selected, heading: california_heading) investment1 = create(:budget_investment, :selected, heading: california)
investment2 = create(:budget_investment, :selected, heading: new_york_heading) investment2 = create(:budget_investment, :selected, heading: new_york)
ballot = create(:budget_ballot, user: user, budget: budget) ballot = create(:budget_ballot, user: user, budget: budget)
ballot.investments << investment1 ballot.investments << investment1
visit budget_investments_path(budget, heading_id: california_heading.id) visit budget_investments_path(budget, heading_id: california.id)
within("#budget_investment_#{investment1.id}") do within("#budget_investment_#{investment1.id}") do
find('.remove a').trigger('click') find('.remove a').trigger('click')
end end
visit budget_investments_path(budget, heading_id: new_york_heading.id) visit budget_investments_path(budget, heading_id: new_york.id)
add_to_ballot(investment2) add_to_ballot(investment2)
visit budget_path(budget) visit budget_path(budget)
click_link "Districts" click_link "States"
expect(page).to have_css("#budget_heading_#{new_york_heading.id}.active") expect(page).to have_css("#budget_heading_#{new_york.id}.active")
expect(page).to_not have_css("#budget_heading_#{california_heading.id}.active") expect(page).to_not have_css("#budget_heading_#{california.id}.active")
end end
scenario 'View another heading' do scenario 'View another heading' do
investment = create(:budget_investment, :selected, heading: california_heading) investment = create(:budget_investment, :selected, heading: california)
ballot = create(:budget_ballot, user: user, budget: budget) ballot = create(:budget_ballot, user: user, budget: budget)
ballot.investments << investment ballot.investments << investment
visit budget_investments_path(budget, heading_id: new_york_heading.id) visit budget_investments_path(budget, heading_id: new_york.id)
expect(page).to_not have_css "#progressbar" expect(page).to_not have_css "#progressbar"
expect(page).to have_content "You have active votes in another heading:" expect(page).to have_content "You have active votes in another heading:"
expect(page).to have_link california_heading.name, href: budget_investments_path(budget, heading: california_heading) expect(page).to have_link california.name, href: budget_investments_path(budget, heading: california)
end end
end end
@@ -473,9 +472,6 @@ feature 'Ballots' do
end end
scenario 'Different district', :js do scenario 'Different district', :js do
california = create(:budget_heading, group: group)
new_york = create(:budget_heading, group: group)
bi1 = create(:budget_investment, :selected, heading: california) bi1 = create(:budget_investment, :selected, heading: california)
bi2 = create(:budget_investment, :selected, heading: new_york) bi2 = create(:budget_investment, :selected, heading: new_york)
@@ -493,8 +489,6 @@ feature 'Ballots' do
end end
scenario 'Insufficient funds (on page load)', :js do scenario 'Insufficient funds (on page load)', :js do
california = create(:budget_heading, group: group, price: 1000)
bi1 = create(:budget_investment, :selected, heading: california, price: 600) bi1 = create(:budget_investment, :selected, heading: california, price: 600)
bi2 = create(:budget_investment, :selected, heading: california, price: 500) bi2 = create(:budget_investment, :selected, heading: california, price: 500)
@@ -512,8 +506,6 @@ feature 'Ballots' do
end end
scenario 'Insufficient funds (added after create)', :js do scenario 'Insufficient funds (added after create)', :js do
california = create(:budget_heading, group: group, price: 1000)
bi1 = create(:budget_investment, :selected, heading: california, price: 600) bi1 = create(:budget_investment, :selected, heading: california, price: 600)
bi2 = create(:budget_investment, :selected, heading: california, price: 500) bi2 = create(:budget_investment, :selected, heading: california, price: 500)
@@ -537,8 +529,6 @@ feature 'Ballots' do
end end
scenario 'Insufficient funds (removed after destroy)', :js do scenario 'Insufficient funds (removed after destroy)', :js do
california = create(:budget_heading, group: group, price: 1000)
bi1 = create(:budget_investment, :selected, heading: california, price: 600) bi1 = create(:budget_investment, :selected, heading: california, price: 600)
bi2 = create(:budget_investment, :selected, heading: california, price: 500) bi2 = create(:budget_investment, :selected, heading: california, price: 500)
@@ -567,8 +557,6 @@ feature 'Ballots' do
end end
scenario 'Insufficient functs (removed after destroying from sidebar)', :js do scenario 'Insufficient functs (removed after destroying from sidebar)', :js do
california = create(:budget_heading, group: group, price: 1000)
bi1 = create(:budget_investment, :selected, heading: california, price: 600) bi1 = create(:budget_investment, :selected, heading: california, price: 600)
bi2 = create(:budget_investment, :selected, heading: california, price: 500) bi2 = create(:budget_investment, :selected, heading: california, price: 500)
@@ -600,7 +588,6 @@ feature 'Ballots' do
scenario "Balloting is disabled when budget isn't in the balotting phase", :js do scenario "Balloting is disabled when budget isn't in the balotting phase", :js do
budget.update(phase: 'on_hold') budget.update(phase: 'on_hold')
california = create(:budget_heading, group: group, price: 1000)
bi1 = create(:budget_investment, :selected, heading: california, price: 600) bi1 = create(:budget_investment, :selected, heading: california, price: 600)
login_as(user) login_as(user)