diff --git a/app/controllers/admin/site_texts_controller.rb b/app/controllers/admin/site_texts_controller.rb index 0482fcc5a4e..d4aa36d7587 100644 --- a/app/controllers/admin/site_texts_controller.rb +++ b/app/controllers/admin/site_texts_controller.rb @@ -135,14 +135,7 @@ class Admin::SiteTextsController < Admin::AdminController raise Discourse::NotFound if override.blank? - if override.outdated? - override.update!( - status: "up_to_date", - original_translation: - I18n.overrides_disabled do - I18n.t(TranslationOverride.transform_pluralized_key(params[:id]), locale: :en) - end, - ) + if override.make_up_to_date! render json: success_json else render json: failed_json.merge(message: "Can only dismiss outdated translations"), status: 422 diff --git a/app/models/translation_override.rb b/app/models/translation_override.rb index 5d693ff8534..1da96f4479c 100644 --- a/app/models/translation_override.rb +++ b/app/models/translation_override.rb @@ -170,6 +170,12 @@ class TranslationOverride < ActiveRecord::Base translation_key.to_s.end_with?("_MF") end + def make_up_to_date! + return unless outdated? + self.original_translation = current_default + update_attribute!(:status, :up_to_date) + end + private def transformed_key diff --git a/spec/models/translation_override_spec.rb b/spec/models/translation_override_spec.rb index a8da3b88b4a..902534e998e 100644 --- a/spec/models/translation_override_spec.rb +++ b/spec/models/translation_override_spec.rb @@ -382,4 +382,36 @@ RSpec.describe TranslationOverride do it { is_expected.not_to be_a_message_format } end end + + describe "#make_up_to_date!" do + fab!(:override) { Fabricate(:translation_override, translation_key: "js.posts_likes_MF") } + + context "when override is not outdated" do + it "does nothing" do + expect { override.make_up_to_date! }.not_to change { override.reload.attributes } + end + + it "returns a falsy value" do + expect(override.make_up_to_date!).to be_falsy + end + end + + context "when override is outdated" do + before { override.update_columns(status: :outdated, value: "{ Invalid MF syntax") } + + it "updates its original translation to match the current default" do + expect { override.make_up_to_date! }.to change { override.reload.original_translation }.to( + I18n.t("js.posts_likes_MF"), + ) + end + + it "sets its status to 'up_to_date'" do + expect { override.make_up_to_date! }.to change { override.reload.up_to_date? }.to(true) + end + + it "returns a truthy value" do + expect(override.make_up_to_date!).to be_truthy + end + end + end end