Merge pull request #3992 from consul/remote_translations_runtime

Check remote translations locales at runtime
This commit is contained in:
Javier Martín
2020-05-13 18:04:51 +02:00
committed by GitHub
5 changed files with 21 additions and 4 deletions

View File

@@ -4,7 +4,7 @@ class RemoteTranslation < ApplicationRecord
validates :remote_translatable_id, presence: true validates :remote_translatable_id, presence: true
validates :remote_translatable_type, presence: true validates :remote_translatable_type, presence: true
validates :locale, presence: true validates :locale, presence: true
validates :locale, inclusion: { in: RemoteTranslations::Microsoft::AvailableLocales.available_locales } validates :locale, inclusion: { in: ->(_) { RemoteTranslations::Microsoft::AvailableLocales.available_locales }}
validate :already_translated_resource validate :already_translated_resource
after_create :enqueue_remote_translation after_create :enqueue_remote_translation

View File

@@ -1,6 +1,6 @@
require "rails_helper" require "rails_helper"
describe RemoteTranslationsController do describe RemoteTranslationsController, :remote_translations do
describe "POST create", :delay_jobs do describe "POST create", :delay_jobs do
let(:debate) { create(:debate) } let(:debate) { create(:debate) }

View File

@@ -1,6 +1,6 @@
require "rails_helper" require "rails_helper"
describe RemoteTranslations::Caller do describe RemoteTranslations::Caller, :remote_translations do
before do before do
RemoteTranslation.skip_callback(:create, :after, :enqueue_remote_translation) RemoteTranslation.skip_callback(:create, :after, :enqueue_remote_translation)
end end

View File

@@ -1,6 +1,6 @@
require "rails_helper" require "rails_helper"
describe RemoteTranslation do describe RemoteTranslation, :remote_translations do
let(:remote_translation) { build(:remote_translation, locale: :es) } let(:remote_translation) { build(:remote_translation, locale: :es) }
it "is valid" do it "is valid" do
@@ -37,6 +37,18 @@ describe RemoteTranslation do
expect(remote_translation).not_to be_valid expect(remote_translation).not_to be_valid
end end
it "checks available locales dynamically" do
allow(RemoteTranslations::Microsoft::AvailableLocales)
.to receive(:available_locales).and_return(["en"])
expect(remote_translation).not_to be_valid
allow(RemoteTranslations::Microsoft::AvailableLocales)
.to receive(:available_locales).and_return(["es"])
expect(remote_translation).to be_valid
end
describe "#enqueue_remote_translation", :delay_jobs do describe "#enqueue_remote_translation", :delay_jobs do
it "after create enqueue Delayed Job" do it "after create enqueue Delayed Job" do
expect { remote_translation.save }.to change { Delayed::Job.count }.by(1) expect { remote_translation.save }.to change { Delayed::Job.count }.by(1)

View File

@@ -69,6 +69,11 @@ RSpec.configure do |config|
Delayed::Worker.delay_jobs = false Delayed::Worker.delay_jobs = false
end end
config.before(:each, :remote_translations) do
allow(RemoteTranslations::Microsoft::AvailableLocales)
.to receive(:available_locales).and_return(I18n.available_locales.map(&:to_s))
end
config.before(:each, :with_frozen_time) do config.before(:each, :with_frozen_time) do
travel_to Time.current # TODO: use `freeze_time` after migrating to Rails 5.2. travel_to Time.current # TODO: use `freeze_time` after migrating to Rails 5.2.
end end