Make budget groups translatable

This commit is contained in:
Julian Herrero
2019-01-21 11:35:38 +01:00
parent 90d0a6e416
commit 1c35ec99c1
16 changed files with 141 additions and 31 deletions

View File

@@ -9,6 +9,11 @@ feature "Admin budget groups" do
login_as(admin.user)
end
it_behaves_like "translatable",
"budget_group",
"edit_admin_budget_group_path",
%w[name]
context "Feature flag" do
background do
@@ -140,6 +145,30 @@ feature "Admin budget groups" do
expect(page).to have_field "Maximum number of headings in which a user can vote", with: "2"
end
scenario "Changing name for current locale will update the slug if budget is in draft phase", :js do
group = create(:budget_group, budget: budget)
old_slug = group.slug
visit edit_admin_budget_group_path(budget, group)
select "Español", from: "translation_locale"
fill_in "Group name", with: "Spanish name"
click_button "Save group"
expect(page).to have_content "Group updated successfully"
expect(group.reload.slug).to eq old_slug
visit edit_admin_budget_group_path(budget, group)
click_link "English"
fill_in "Group name", with: "New English Name"
click_button "Save group"
expect(page).to have_content "Group updated successfully"
expect(group.reload.slug).not_to eq old_slug
expect(group.slug).to eq "new-english-name"
end
end
context "Update" do
@@ -173,7 +202,7 @@ feature "Admin budget groups" do
expect(page).not_to have_content "Group updated successfully"
expect(page).to have_css("label.error", text: "Group name")
expect(page).to have_content "has already been taken"
expect(page).to have_css("small.error", text: "has already been taken")
end
end

View File

@@ -1,23 +1,35 @@
require 'rails_helper'
require "rails_helper"
describe Budget::Group do
let(:budget) { create(:budget) }
it_behaves_like "sluggable", updatable_slug_trait: :drafting_budget
describe "name" do
before do
create(:budget_group, budget: budget, name: 'object name')
describe "Validations" do
let(:budget) { create(:budget) }
let(:group) { create(:budget_group, budget: budget) }
describe "name" do
before do
group.update(name: "object name")
end
it "can be repeatead in other budget's groups" do
expect(build(:budget_group, budget: create(:budget), name: "object name")).to be_valid
end
it "may be repeated for the same group and a different locale" do
group.update(name_fr: "object name")
expect(group.translations.last).to be_valid
end
it "must not be repeated for a different group in any locale" do
group.update(name_en: "English", name_es: "Español")
expect(build(:budget_group, budget: budget, name_en: "English")).not_to be_valid
expect(build(:budget_group, budget: budget, name_en: "Español")).not_to be_valid
end
end
it "can be repeatead in other budget's groups" do
expect(build(:budget_group, budget: create(:budget), name: 'object name')).to be_valid
end
it "must be unique among all budget's groups" do
expect(build(:budget_group, budget: budget, name: 'object name')).not_to be_valid
end
end
end

View File

@@ -345,6 +345,8 @@ def update_button_text
"Update Custom page"
when "Widget::Card"
"Save card"
when "Budget::Group"
"Save group"
else
"Save changes"
end