From 273d0f2f13389df8519d2a5f667531636fb2f3e5 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Mon, 16 Jan 2023 10:53:00 +1000 Subject: [PATCH] FIX: Fix incorrect hashtag setting migration (#19857) Added in c2013865d78d353280ae68135b4c218e21ffb566, this migration was supposed to only turn off the hashtag setting for existing sites (since that was the old default) but its doing it for new ones too because we run all migrations on new sites. Instead, we should only run this if the first migration was only just created, meaning its a new site. --- ...rimental_hashtag_feature_default_for_new_sites.rb | 12 +++++++++++- plugins/chat/spec/models/chat_message_spec.rb | 4 +++- .../advanced_user_narrative_spec.rb | 3 +++ spec/integrity/common_mark_spec.rb | 3 +++ spec/lib/pretty_text_spec.rb | 9 +++++++++ spec/requests/hashtags_controller_spec.rb | 4 ++++ 6 files changed, 33 insertions(+), 2 deletions(-) diff --git a/db/migrate/20230103004613_make_experimental_hashtag_feature_default_for_new_sites.rb b/db/migrate/20230103004613_make_experimental_hashtag_feature_default_for_new_sites.rb index e0047fdb3c4..55f6d340367 100644 --- a/db/migrate/20230103004613_make_experimental_hashtag_feature_default_for_new_sites.rb +++ b/db/migrate/20230103004613_make_experimental_hashtag_feature_default_for_new_sites.rb @@ -2,11 +2,21 @@ class MakeExperimentalHashtagFeatureDefaultForNewSites < ActiveRecord::Migration[7.0] def up - execute(<<~SQL) + result = execute <<~SQL + SELECT created_at + FROM schema_migration_details + ORDER BY created_at + LIMIT 1 + SQL + + settings_insert_query = <<~SQL INSERT INTO site_settings (name, data_type, value, created_at, updated_at) VALUES ('enable_experimental_hashtag_autocomplete', 5, 'f', now(), now()) ON CONFLICT DO NOTHING SQL + + # keep enable_experimental_hashtag_autocomplete disabled for for existing sites + execute settings_insert_query if result.first["created_at"].to_datetime < 1.hour.ago end def down diff --git a/plugins/chat/spec/models/chat_message_spec.rb b/plugins/chat/spec/models/chat_message_spec.rb index 1ce6a39ed36..9e305f98f25 100644 --- a/plugins/chat/spec/models/chat_message_spec.rb +++ b/plugins/chat/spec/models/chat_message_spec.rb @@ -234,8 +234,10 @@ describe ChatMessage do expect(cooked).to eq("

@mention

") end - # TODO (martin) Remove this when enable_experimental_hashtag_autocomplete is default it "supports category-hashtag plugin" do + # TODO (martin) Remove when enable_experimental_hashtag_autocomplete is default for all sites + SiteSetting.enable_experimental_hashtag_autocomplete = false + category = Fabricate(:category) cooked = ChatMessage.cook("##{category.slug}") diff --git a/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/advanced_user_narrative_spec.rb b/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/advanced_user_narrative_spec.rb index 82e5024e99e..14561dceed8 100644 --- a/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/advanced_user_narrative_spec.rb +++ b/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/advanced_user_narrative_spec.rb @@ -494,6 +494,9 @@ RSpec.describe DiscourseNarrativeBot::AdvancedUserNarrative do end it "should create the right reply" do + # TODO (martin) Remove when enable_experimental_hashtag_autocomplete is default for all sites + SiteSetting.enable_experimental_hashtag_autocomplete = false + category = Fabricate(:category) post.update!(raw: "Check out this ##{category.slug}") diff --git a/spec/integrity/common_mark_spec.rb b/spec/integrity/common_mark_spec.rb index c89f9ff0e81..85c8c821227 100644 --- a/spec/integrity/common_mark_spec.rb +++ b/spec/integrity/common_mark_spec.rb @@ -5,6 +5,9 @@ RSpec.describe "CommonMark" do SiteSetting.enable_markdown_typographer = false SiteSetting.highlighted_languages = "ruby|aa" + # TODO (martin) Remove when enable_experimental_hashtag_autocomplete is default for all sites + SiteSetting.enable_experimental_hashtag_autocomplete = false + html, state, md = nil failed = 0 diff --git a/spec/lib/pretty_text_spec.rb b/spec/lib/pretty_text_spec.rb index 25a8d80749b..7b3ef983203 100644 --- a/spec/lib/pretty_text_spec.rb +++ b/spec/lib/pretty_text_spec.rb @@ -1619,6 +1619,9 @@ RSpec.describe PrettyText do end it "produces hashtag links" do + # TODO (martin) Remove when enable_experimental_hashtag_autocomplete is default for all sites + SiteSetting.enable_experimental_hashtag_autocomplete = false + category = Fabricate(:category, name: "testing") category2 = Fabricate(:category, name: "known") Fabricate(:topic, tags: [Fabricate(:tag, name: "known")]) @@ -1908,6 +1911,9 @@ HTML end it "does not replace hashtags and mentions" do + # TODO (martin) Remove when enable_experimental_hashtag_autocomplete is default for all sites + SiteSetting.enable_experimental_hashtag_autocomplete = false + Fabricate(:user, username: "test") category = Fabricate(:category, slug: "test") Fabricate( @@ -1927,6 +1933,9 @@ HTML end it "does not replace hashtags and mentions when watched words are regular expressions" do + # TODO (martin) Remove when enable_experimental_hashtag_autocomplete is default for all sites + SiteSetting.enable_experimental_hashtag_autocomplete = false + SiteSetting.watched_words_regular_expressions = true Fabricate(:user, username: "test") diff --git a/spec/requests/hashtags_controller_spec.rb b/spec/requests/hashtags_controller_spec.rb index 9cffbf5b96f..2d2b0f3ca67 100644 --- a/spec/requests/hashtags_controller_spec.rb +++ b/spec/requests/hashtags_controller_spec.rb @@ -14,6 +14,10 @@ RSpec.describe HashtagsController do before do SiteSetting.tagging_enabled = true + + # TODO (martin) Remove when enable_experimental_hashtag_autocomplete is default for all sites + SiteSetting.enable_experimental_hashtag_autocomplete = false + tag_group end