Fix globalization for information texts

Refactoring and making similar specs to the milestones globalization specs
This commit is contained in:
rgarcia
2018-07-26 22:56:36 +02:00
committed by Angel Perez
parent 113981c573
commit 82f496ccfa
3 changed files with 121 additions and 8 deletions

View File

@@ -9,15 +9,25 @@ class Admin::SiteCustomization::InformationTextsController < Admin::SiteCustomiz
def update def update
content_params.each do |content| content_params.each do |content|
value = content[:values].slice(*translation_params(content[:values])) values = content[:values].slice(*translation_params(content[:values]))
unless value.empty?
text = I18nContent.by_key(content[:id]).last || I18nContent.create(key: content[:id]) unless values.empty?
text.update(value) values.each do |key, value|
text.save locale = key.split("_").last
if value == I18n.backend.translate(locale, content[:id])
next
else
text = I18nContent.find_or_create_by(key: content[:id])
Globalize.locale = locale
text.update(value: value)
end
end end
end end
redirect_to admin_site_customization_information_texts_path end
redirect_to admin_site_customization_information_texts_path, notice: "Translation updated successfully"
end end
private private

View File

@@ -1,7 +1,9 @@
<% globalize(locale) do %> <% globalize(locale) do %>
<p><%= I18nContent.where(key: content.key).first.try(:value) %></p>
<%= hidden_field_tag "contents[content_#{content.key}][id]", content.key %> <%= hidden_field_tag "contents[content_#{content.key}][id]", content.key %>
<%= text_area_tag "contents[content_#{content.key}]values[value_#{locale}]", <%= text_area_tag "contents[content_#{content.key}]values[value_#{locale}]",
content.value || t(content.key), I18nContent.where(key: content.key).first.try(:value) ||
I18n.backend.translate(locale, content.key),
{ rows: 5, { rows: 5,
class: "js-globalize-attribute", class: "js-globalize-attribute",
style: display_translation?(locale), style: display_translation?(locale),

View File

@@ -17,7 +17,7 @@ feature "Admin custom information texts" do
expect(page).to have_content 'Access the community' expect(page).to have_content 'Access the community'
click_link 'Proposals' click_link 'Proposals'
expect(page).to have_content 'Proposal type' expect(page).to have_content 'Create proposal'
within "#information-texts-tabs" do within "#information-texts-tabs" do
click_link "Polls" click_link "Polls"
@@ -112,4 +112,105 @@ feature "Admin custom information texts" do
expect(page).not_to have_content 'Texto en español' expect(page).not_to have_content 'Texto en español'
end end
context "Globalization" do
scenario "Add a translation", :js, :focus do
key = "debates.form.debate_title"
visit admin_site_customization_information_texts_path
select "Français", from: "translation_locale"
fill_in "contents_content_#{key}values_value_fr", with: 'Titre personalise du débat'
click_button "Save"
expect(page).to have_content 'Translation updated successfully'
select "Français", from: "translation_locale"
expect(page).to have_content 'Titre personalise du débat'
expect(page).not_to have_content 'Titre du débat'
end
scenario "Update a translation", :js do
visit @edit_milestone_url
click_link "Español"
fill_in 'budget_investment_milestone_description_es', with: 'Descripción correcta en Español'
click_button 'Update milestone'
expect(page).to have_content "Milestone updated successfully"
visit budget_investment_path(investment.budget, investment)
click_link("Milestones (1)")
expect(page).to have_content("Description in English")
select('Español', from: 'locale-switcher')
click_link("Seguimiento (1)")
expect(page).to have_content("Descripción correcta en Español")
end
scenario "Remove a translation", :js do
visit @edit_milestone_url
click_link "Español"
click_link "Remove language"
expect(page).not_to have_link "Español"
click_button "Update milestone"
visit @edit_milestone_url
expect(page).not_to have_link "Español"
end
context "Globalize javascript interface" do
scenario "Highlight current locale", :js do
visit @edit_milestone_url
expect(find("a.js-globalize-locale-link.is-active")).to have_content "English"
select('Español', from: 'locale-switcher')
expect(find("a.js-globalize-locale-link.is-active")).to have_content "Español"
end
scenario "Highlight selected locale", :js do
visit @edit_milestone_url
expect(find("a.js-globalize-locale-link.is-active")).to have_content "English"
click_link "Español"
expect(find("a.js-globalize-locale-link.is-active")).to have_content "Español"
end
scenario "Show selected locale form", :js do
visit @edit_milestone_url
expect(page).to have_field('budget_investment_milestone_description_en', with: 'Description in English')
click_link "Español"
expect(page).to have_field('budget_investment_milestone_description_es', with: 'Descripción en Español')
end
scenario "Select a locale and add it to the milestone form", :js do
visit @edit_milestone_url
select "Français", from: "translation_locale"
expect(page).to have_link "Français"
click_link "Français"
expect(page).to have_field('budget_investment_milestone_description_fr')
end
end
end
end end