Make budgets translatable
This commit is contained in:
@@ -7,6 +7,11 @@ feature 'Admin budgets' do
|
||||
login_as(admin.user)
|
||||
end
|
||||
|
||||
it_behaves_like "translatable",
|
||||
"budget",
|
||||
"edit_admin_budget_path",
|
||||
%w[name]
|
||||
|
||||
context 'Feature flag' do
|
||||
|
||||
background do
|
||||
@@ -95,7 +100,7 @@ feature 'Admin budgets' do
|
||||
visit admin_budgets_path
|
||||
click_link 'Create new budget'
|
||||
|
||||
fill_in 'budget_name', with: 'M30 - Summer campaign'
|
||||
fill_in "Name", with: "M30 - Summer campaign"
|
||||
select 'Accepting projects', from: 'budget[phase]'
|
||||
|
||||
click_button 'Create Budget'
|
||||
@@ -112,6 +117,18 @@ feature 'Admin budgets' do
|
||||
expect(page).to have_css("label.error", text: "Name")
|
||||
end
|
||||
|
||||
scenario "Name should be unique" do
|
||||
create(:budget, name: "Existing Name")
|
||||
|
||||
visit new_admin_budget_path
|
||||
fill_in "Name", with: "Existing Name"
|
||||
click_button "Create Budget"
|
||||
|
||||
expect(page).not_to have_content "New participatory budget created successfully!"
|
||||
expect(page).to have_css("label.error", text: "Name")
|
||||
expect(page).to have_css("small.error", text: "has already been taken")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context 'Destroy' do
|
||||
@@ -174,6 +191,31 @@ feature 'Admin budgets' do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
scenario "Changing name for current locale will update the slug if budget is in draft phase", :js do
|
||||
budget.update(phase: "drafting")
|
||||
old_slug = budget.slug
|
||||
|
||||
visit edit_admin_budget_path(budget)
|
||||
|
||||
select "Español", from: "translation_locale"
|
||||
fill_in "Name", with: "Spanish name"
|
||||
click_button "Update Budget"
|
||||
|
||||
expect(page).to have_content "Participatory budget updated successfully"
|
||||
expect(budget.reload.slug).to eq old_slug
|
||||
|
||||
visit edit_admin_budget_path(budget)
|
||||
|
||||
click_link "English"
|
||||
fill_in "Name", with: "New English Name"
|
||||
click_button "Update Budget"
|
||||
|
||||
expect(page).to have_content "Participatory budget updated successfully"
|
||||
expect(budget.reload.slug).not_to eq old_slug
|
||||
expect(budget.slug).to eq "new-english-name"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context 'Update' do
|
||||
@@ -186,7 +228,7 @@ feature 'Admin budgets' do
|
||||
visit admin_budgets_path
|
||||
click_link 'Edit budget'
|
||||
|
||||
fill_in 'budget_name', with: 'More trees on the streets'
|
||||
fill_in "Name", with: "More trees on the streets"
|
||||
click_button 'Update Budget'
|
||||
|
||||
expect(page).to have_content('More trees on the streets')
|
||||
|
||||
@@ -8,11 +8,20 @@ describe Budget do
|
||||
|
||||
describe "name" do
|
||||
before do
|
||||
create(:budget, name: 'object name')
|
||||
budget.update(name_en: "object name")
|
||||
end
|
||||
|
||||
it "is validated for uniqueness" do
|
||||
expect(build(:budget, name: 'object name')).not_to be_valid
|
||||
it "must not be repeated for a different budget and same locale" do
|
||||
expect(build(:budget, name_en: "object name")).not_to be_valid
|
||||
end
|
||||
|
||||
it "must not be repeated for a different budget and a different locale" do
|
||||
expect(build(:budget, name_fr: "object name")).not_to be_valid
|
||||
end
|
||||
|
||||
it "may be repeated for the same budget and a different locale" do
|
||||
budget.update(name_fr: "object name")
|
||||
expect(budget.translations.last).to be_valid
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -329,6 +329,8 @@ def update_button_text
|
||||
"Update notification"
|
||||
when "Poll"
|
||||
"Update poll"
|
||||
when "Budget"
|
||||
"Update Budget"
|
||||
when "Poll::Question", "Poll::Question::Answer"
|
||||
"Save"
|
||||
when "SiteCustomization::Page"
|
||||
|
||||
Reference in New Issue
Block a user