diff --git a/lib/email_controller_helper/topic_email_unsubscriber.rb b/lib/email_controller_helper/topic_email_unsubscriber.rb index eda37b7d66..e31ef94e1b 100644 --- a/lib/email_controller_helper/topic_email_unsubscriber.rb +++ b/lib/email_controller_helper/topic_email_unsubscriber.rb @@ -8,6 +8,8 @@ module EmailControllerHelper topic = unsubscribe_key.associated_topic + return if topic.blank? + controller.instance_variable_set(:@topic, topic) controller.instance_variable_set( :@watching_topic, diff --git a/spec/requests/email_controller_spec.rb b/spec/requests/email_controller_spec.rb index 57478f38fe..c9c29a0d0c 100644 --- a/spec/requests/email_controller_spec.rb +++ b/spec/requests/email_controller_spec.rb @@ -317,6 +317,15 @@ RSpec.describe EmailController do expect(response.body).not_to include("unwatch_category") end + it "displays form even if topic is deleted" do + post.topic.trash! + + navigate_to_unsubscribe + + expect(response.status).to eq(200) + expect(response.body).to include(I18n.t("unsubscribe.all", sitename: SiteSetting.title)) + end + def create_category_user(notification_level) CategoryUser.create!( user_id: user.id,