From 13f2723dcbc18158ee2ef4fa6cf1540baf59875f Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 22 Apr 2020 11:53:47 -0400 Subject: [PATCH] FIX: Don't log an error to logster if a topic could not be updated. If for some reason an update did not go through (for example, concurrently updating the same topic twice), we were logging something like: ``` create_errors_json called with unrecognized type: # 0 first_post = topic.ordered_posts.first success = PostRevisor.new(first_post, topic).revise!(current_user, changes, validate_post: false) + + if !success && topic.errors.blank? + topic.errors.add(:base, :unable_to_update) + end end # this is used to return the title to the client as it may have been changed by "TextCleaner" diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 23f492a3948..004f511e03f 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -534,6 +534,7 @@ en: no_user_selected: "You must select a valid user." reply_by_email_disabled: "Reply by email has been disabled." target_user_not_found: "One of the users you are sending this message to could not be found." + unable_to_update: "There was an error updating that topic." featured_link: invalid: "is invalid. URL should include http:// or https://." invalid_category: "can't be edited in this category." diff --git a/spec/requests/topics_controller_spec.rb b/spec/requests/topics_controller_spec.rb index e48a2f94830..ebb2b90f04b 100644 --- a/spec/requests/topics_controller_spec.rb +++ b/spec/requests/topics_controller_spec.rb @@ -956,6 +956,16 @@ RSpec.describe TopicsController do expect(::JSON.parse(response.body)['basic_topic']).to be_present end + it "throws an error if it could not be saved" do + PostRevisor.any_instance.stubs(:should_revise?).returns(false) + put "/t/#{topic.slug}/#{topic.id}.json", params: { title: "brand new title" } + + expect(response.status).to eq(422) + expect(response.parsed_body['errors'].first).to eq( + I18n.t("activerecord.errors.models.topic.attributes.base.unable_to_update") + ) + end + it "can update a topic to an uncategorized topic" do topic.update!(category: Fabricate(:category))