From e7fcca9b47f8cf0a167a171aeff6a3e64a90d4e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 20 Apr 2020 03:09:44 +0200 Subject: [PATCH] Check remote translations locales at runtime We were evaluating its value when the server starts. On production enviroments, that could mean weeks or months before the available locales are checked again, and so it would be possible to use a list which is no longer in sync with the list provided by microsoft. --- app/models/remote_translation.rb | 2 +- spec/models/remote_translation_spec.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/models/remote_translation.rb b/app/models/remote_translation.rb index 85fc77bdd..63b4cfc92 100644 --- a/app/models/remote_translation.rb +++ b/app/models/remote_translation.rb @@ -4,7 +4,7 @@ class RemoteTranslation < ApplicationRecord validates :remote_translatable_id, presence: true validates :remote_translatable_type, 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 after_create :enqueue_remote_translation diff --git a/spec/models/remote_translation_spec.rb b/spec/models/remote_translation_spec.rb index 399952939..e0364033c 100644 --- a/spec/models/remote_translation_spec.rb +++ b/spec/models/remote_translation_spec.rb @@ -37,6 +37,18 @@ describe RemoteTranslation do expect(remote_translation).not_to be_valid 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 it "after create enqueue Delayed Job" do expect { remote_translation.save }.to change { Delayed::Job.count }.by(1)