mirror of
https://github.com/discourse/discourse.git
synced 2025-05-25 00:32:52 +08:00
FEATURE: allow admins to enable announced experimental features (#29244)
Toggle the button to enable the experimental site setting from "What's new" announcement. The toggle button is displayed when: - site setting exists and is boolean; - potentially required plugin is enabled.
This commit is contained in:

committed by
GitHub

parent
644e6c7f46
commit
433fadbd52
@ -248,6 +248,64 @@ RSpec.describe DiscourseUpdates do
|
||||
expect(result[1]["title"]).to eq("Whistles")
|
||||
expect(result[2]["title"]).to eq("Bells")
|
||||
end
|
||||
|
||||
it "correctly shows features with correct boolean experimental site settings" do
|
||||
features_with_versions = [
|
||||
{
|
||||
"emoji" => "🤾",
|
||||
"title" => "Bells",
|
||||
"created_at" => 2.days.ago,
|
||||
"experiment_setting" => "enable_mobile_theme",
|
||||
},
|
||||
{
|
||||
"emoji" => "🙈",
|
||||
"title" => "Whistles",
|
||||
"created_at" => 3.days.ago,
|
||||
"experiment_setting" => "default_theme_id",
|
||||
},
|
||||
{
|
||||
"emoji" => "🙈",
|
||||
"title" => "Confetti",
|
||||
"created_at" => 4.days.ago,
|
||||
"experiment_setting" => "wrong value",
|
||||
},
|
||||
]
|
||||
|
||||
Discourse.redis.set("new_features", MultiJson.dump(features_with_versions))
|
||||
DiscourseUpdates.last_installed_version = "2.7.0.beta2"
|
||||
result = DiscourseUpdates.new_features
|
||||
|
||||
expect(result.length).to eq(3)
|
||||
expect(result[0]["experiment_setting"]).to eq("enable_mobile_theme")
|
||||
expect(result[1]["experiment_setting"]).to be_nil
|
||||
expect(result[2]["experiment_setting"]).to be_nil
|
||||
end
|
||||
|
||||
it "correctly shows features when related plugins are installed" do
|
||||
Discourse.stubs(:plugins_by_name).returns({ "discourse-ai" => true })
|
||||
|
||||
features_with_versions = [
|
||||
{
|
||||
"emoji" => "🤾",
|
||||
"title" => "Bells",
|
||||
"created_at" => 2.days.ago,
|
||||
"plugin_name" => "discourse-ai",
|
||||
},
|
||||
{
|
||||
"emoji" => "🙈",
|
||||
"title" => "Confetti",
|
||||
"created_at" => 4.days.ago,
|
||||
"plugin_name" => "uninstalled-plugin",
|
||||
},
|
||||
]
|
||||
|
||||
Discourse.redis.set("new_features", MultiJson.dump(features_with_versions))
|
||||
DiscourseUpdates.last_installed_version = "2.7.0.beta2"
|
||||
result = DiscourseUpdates.new_features
|
||||
|
||||
expect(result.length).to eq(1)
|
||||
expect(result[0]["title"]).to eq("Bells")
|
||||
end
|
||||
end
|
||||
|
||||
describe "#get_last_viewed_feature_date" do
|
||||
|
Reference in New Issue
Block a user