Add task to migrate data to translation tables

We forgot to do it when we created the translation tables, and so now we
need to make sure we don't overwrite existing translations.
This commit is contained in:
Javi Martín
2018-10-05 14:15:24 +02:00
committed by decabeza
parent c9fadc7c3d
commit c774ae67a0
2 changed files with 110 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
require "rails_helper"
require "rake"
describe "Globalize tasks" do
describe "#migrate_data" do
before do
Rake.application.rake_require "tasks/globalize"
Rake::Task.define_task(:environment)
end
let :run_rake_task do
Rake::Task["globalize:migrate_data"].reenable
Rake.application.invoke_task "globalize:migrate_data"
end
context "Original data with no translated data" do
let(:poll) do
create(:poll).tap do |poll|
poll.translations.delete_all
poll.update_column(:name, "Original")
poll.reload
end
end
it "copies the original data" do
expect(poll.send(:"name_#{I18n.locale}")).to be nil
expect(poll.name).to eq("Original")
run_rake_task
poll.reload
expect(poll.name).to eq("Original")
expect(poll.send(:"name_#{I18n.locale}")).to eq("Original")
end
end
context "Original data with blank translated data" do
let(:banner) do
create(:banner).tap do |banner|
banner.update_column(:title, "Original")
banner.translations.first.update_column(:title, "")
end
end
it "copies the original data" do
expect(banner.title).to eq("")
run_rake_task
banner.reload
expect(banner.title).to eq("Original")
expect(banner.send(:"title_#{I18n.locale}")).to eq("Original")
end
end
context "Original data with translated data" do
let(:notification) do
create(:admin_notification, title: "Translated").tap do |notification|
notification.update_column(:title, "Original")
end
end
it "maintains the translated data" do
expect(notification.title).to eq("Translated")
run_rake_task
notification.reload
expect(notification.title).to eq("Translated")
expect(notification.send(:"title_#{I18n.locale}")).to eq("Translated")
end
end
end
end