Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve heading names at select boxes #2373

Merged
merged 4 commits into from
Jan 31, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/models/budget/group.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,8 @@ class Group < ActiveRecord::Base
validates :name, presence: true, uniqueness: { scope: :budget }
validates :slug, presence: true, format: /\A[a-z0-9\-_]+\z/

def single_heading_group?
headings.count == 1
end
end
end
2 changes: 1 addition & 1 deletion app/models/budget/heading.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class Heading < ActiveRecord::Base
scope :order_by_group_name, -> { includes(:group).order('budget_groups.name', 'budget_headings.name') }

def name_scoped_by_group
"#{group.name}: #{name}"
group.single_heading_group? ? name : "#{group.name}: #{name}"
end

def name_exists_in_budget_headings
Expand Down
2 changes: 1 addition & 1 deletion app/views/budgets/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
<% @budget.groups.each do |group| %>
<tr>
<td>
<% if group.headings.count == 1 %>
<% if group.single_heading_group? %>
<%= link_to group.name,
budget_investments_path(@budget,
heading_id: group.headings.first.id,
Expand Down
2 changes: 1 addition & 1 deletion spec/features/admin/budget_investments_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@
expect(page).to have_link("Change name")
expect(page).to have_link("Plant trees")

select "Parks: Central Park", from: "heading_id"
select "Central Park", from: "heading_id"

expect(page).not_to have_link("Realocate visitors")
expect(page).not_to have_link("Change name")
Expand Down
22 changes: 19 additions & 3 deletions spec/features/budgets/investments_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -609,7 +609,7 @@ def investments_order
login_as(author)
visit new_budget_investment_path(budget_id: budget.id)

select 'Health: More hospitals', from: 'budget_investment_heading_id'
select heading.name, from: 'budget_investment_heading_id'
fill_in 'budget_investment_title', with: 'I am a bot'
fill_in 'budget_investment_subtitle', with: 'This is the honeypot'
fill_in 'budget_investment_description', with: 'This is the description'
Expand All @@ -628,7 +628,7 @@ def investments_order
login_as(author)
visit new_budget_investment_path(budget_id: budget.id)

select 'Health: More hospitals', from: 'budget_investment_heading_id'
select heading.name, from: 'budget_investment_heading_id'
fill_in 'budget_investment_title', with: 'I am a bot'
fill_in 'budget_investment_description', with: 'This is the description'
check 'budget_investment_terms_of_service'
Expand All @@ -644,7 +644,7 @@ def investments_order

visit new_budget_investment_path(budget_id: budget.id)

select 'Health: More hospitals', from: 'budget_investment_heading_id'
select heading.name, from: 'budget_investment_heading_id'
fill_in 'budget_investment_title', with: 'Build a skyscraper'
fill_in 'budget_investment_description', with: 'I want to live in a high tower over the clouds'
fill_in 'budget_investment_location', with: 'City center'
Expand Down Expand Up @@ -735,6 +735,22 @@ def investments_order
expect(page).not_to have_content('My ballot')
end
end

scenario "Heading options are correctly ordered" do
city_group = create(:budget_group, name: "Toda la ciudad", budget: budget)
create(:budget_heading, name: "Toda la ciudad", price: 333333, group: city_group)
create(:budget_heading, name: "More health professionals", price: 999999, group: group)

login_as(author)

visit new_budget_investment_path(budget_id: budget.id)

select_options = find('#budget_investment_heading_id').all('option').collect(&:text)
expect(select_options.first).to eq('')
expect(select_options.second).to eq('Health: More health professionals')
expect(select_options.third).to eq('Health: More hospitals')
expect(select_options.fourth).to eq('Toda la ciudad')
end
end

scenario "Show" do
Expand Down
2 changes: 1 addition & 1 deletion spec/features/emails_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@
login_as(author)
visit new_budget_investment_path(budget_id: budget.id)

select "#{group.name}: #{heading.name}", from: 'budget_investment_heading_id'
select heading.name, from: 'budget_investment_heading_id'
fill_in 'budget_investment_title', with: 'Build a hospital'
fill_in 'budget_investment_description', with: 'We have lots of people that require medical attention'
check 'budget_investment_terms_of_service'
Expand Down
2 changes: 1 addition & 1 deletion spec/features/management/budget_investments_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
expect(page).to have_content user.document_number
end

select "Whole city: Health", from: 'budget_investment_heading_id'
select "Health", from: 'budget_investment_heading_id'
fill_in 'budget_investment_title', with: 'Build a park in my neighborhood'
fill_in 'budget_investment_description', with: 'There is no parks here...'
fill_in 'budget_investment_location', with: 'City center'
Expand Down
58 changes: 54 additions & 4 deletions spec/features/tags/budget_investments_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@

visit new_budget_investment_path(budget_id: budget.id)

select "#{group.name}: #{heading.name}", from: 'budget_investment_heading_id'
select heading.name, from: 'budget_investment_heading_id'
fill_in 'budget_investment_title', with: 'Build a skyscraper'
fill_in 'budget_investment_description', with: 'I want to live in a high tower over the clouds'
check 'budget_investment_terms_of_service'
Expand All @@ -84,7 +84,7 @@

visit new_budget_investment_path(budget_id: budget.id)

select "#{group.name}: #{heading.name}", from: 'budget_investment_heading_id'
select heading.name, from: 'budget_investment_heading_id'
fill_in 'budget_investment_title', with: 'Build a skyscraper'
fill_in_ckeditor 'budget_investment_description', with: 'If I had a gym near my place I could go do Zumba'
check 'budget_investment_terms_of_service'
Expand All @@ -100,12 +100,62 @@
end
end

scenario "Turbolinks sanity check from budget's show", :js do
login_as(author)

education = create(:tag, name: 'Education', kind: 'category')
health = create(:tag, name: 'Health', kind: 'category')

visit budget_path(budget)
click_link "Create a budget investment"

select heading.name, from: 'budget_investment_heading_id'
fill_in 'budget_investment_title', with: 'Build a skyscraper'
fill_in_ckeditor 'budget_investment_description', with: 'If I had a gym near my place I could go do Zumba'
check 'budget_investment_terms_of_service'

find('.js-add-tag-link', text: 'Education').click
click_button 'Create Investment'

expect(page).to have_content 'Investment created successfully.'

within "#tags_budget_investment_#{Budget::Investment.last.id}" do
expect(page).to have_content 'Education'
expect(page).not_to have_content 'Health'
end
end

scenario "Turbolinks sanity check from budget heading's show", :js do
login_as(author)

education = create(:tag, name: 'Education', kind: 'category')
health = create(:tag, name: 'Health', kind: 'category')

visit budget_investments_path(budget, heading_id: heading.id)
click_link "Create a budget investment"

select heading.name, from: 'budget_investment_heading_id'
fill_in 'budget_investment_title', with: 'Build a skyscraper'
fill_in_ckeditor 'budget_investment_description', with: 'If I had a gym near my place I could go do Zumba'
check 'budget_investment_terms_of_service'

find('.js-add-tag-link', text: 'Education').click
click_button 'Create Investment'

expect(page).to have_content 'Investment created successfully.'

within "#tags_budget_investment_#{Budget::Investment.last.id}" do
expect(page).to have_content 'Education'
expect(page).not_to have_content 'Health'
end
end

scenario 'Create with too many tags' do
login_as(author)

visit new_budget_investment_path(budget_id: budget.id)

select "#{group.name}: #{heading.name}", from: 'budget_investment_heading_id'
select heading.name, from: 'budget_investment_heading_id'
fill_in 'budget_investment_title', with: 'Build a skyscraper'
fill_in 'budget_investment_description', with: 'I want to live in a high tower over the clouds'
check 'budget_investment_terms_of_service'
Expand All @@ -123,7 +173,7 @@

visit new_budget_investment_path(budget_id: budget.id)

select "#{group.name}: #{heading.name}", from: 'budget_investment_heading_id'
select heading.name, from: 'budget_investment_heading_id'
fill_in 'budget_investment_title', with: 'Build a skyscraper'
fill_in 'budget_investment_description', with: 'I want to live in a high tower over the clouds'
check 'budget_investment_terms_of_service'
Expand Down