mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
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: #<Topic ``` This happened because we knew an error occurred but the active record object had no errors attached. This patch fixes the issue by attaching a proper error message in the event that this happens.
This commit is contained in:
parent
58bdc04aac
commit
13f2723dcb
@ -372,6 +372,10 @@ class TopicsController < ApplicationController
|
|||||||
if changes.length > 0
|
if changes.length > 0
|
||||||
first_post = topic.ordered_posts.first
|
first_post = topic.ordered_posts.first
|
||||||
success = PostRevisor.new(first_post, topic).revise!(current_user, changes, validate_post: false)
|
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
|
end
|
||||||
|
|
||||||
# this is used to return the title to the client as it may have been changed by "TextCleaner"
|
# this is used to return the title to the client as it may have been changed by "TextCleaner"
|
||||||
|
@ -534,6 +534,7 @@ en:
|
|||||||
no_user_selected: "You must select a valid user."
|
no_user_selected: "You must select a valid user."
|
||||||
reply_by_email_disabled: "Reply by email has been disabled."
|
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."
|
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:
|
featured_link:
|
||||||
invalid: "is invalid. URL should include http:// or https://."
|
invalid: "is invalid. URL should include http:// or https://."
|
||||||
invalid_category: "can't be edited in this category."
|
invalid_category: "can't be edited in this category."
|
||||||
|
@ -956,6 +956,16 @@ RSpec.describe TopicsController do
|
|||||||
expect(::JSON.parse(response.body)['basic_topic']).to be_present
|
expect(::JSON.parse(response.body)['basic_topic']).to be_present
|
||||||
end
|
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
|
it "can update a topic to an uncategorized topic" do
|
||||||
topic.update!(category: Fabricate(:category))
|
topic.update!(category: Fabricate(:category))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user