mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: add welcome topic cta banner (#17821)
This commit is contained in:
@@ -183,4 +183,50 @@ RSpec.describe Site do
|
||||
expect(data["auth_providers"].map { |a| a["name"] }).to contain_exactly('facebook', 'twitter')
|
||||
end
|
||||
|
||||
describe ".show_welcome_topic_banner?" do
|
||||
it "returns false when the user is not admin" do
|
||||
first_post = Fabricate(:post, created_at: 25.days.ago)
|
||||
SiteSetting.welcome_topic_id = first_post.topic.id
|
||||
|
||||
expect(Site.show_welcome_topic_banner?(Guardian.new(Fabricate(:user)))).to eq(false)
|
||||
end
|
||||
|
||||
it "returns false when the user is not first admin who logs in" do
|
||||
first_post = Fabricate(:post, created_at: 25.days.ago)
|
||||
SiteSetting.welcome_topic_id = first_post.topic.id
|
||||
|
||||
expect(Site.show_welcome_topic_banner?(Guardian.new(Fabricate(:admin)))).to eq(false)
|
||||
end
|
||||
|
||||
it "returns true when welcome topic is less than month old" do
|
||||
admin = Fabricate(:admin)
|
||||
UserAuthToken.generate!(user_id: admin.id)
|
||||
|
||||
first_post = Fabricate(:post, created_at: 25.days.ago)
|
||||
SiteSetting.welcome_topic_id = first_post.topic.id
|
||||
|
||||
expect(Site.show_welcome_topic_banner?(Guardian.new(admin))).to eq(true)
|
||||
end
|
||||
|
||||
it "returns false when welcome topic is more than month old" do
|
||||
admin = Fabricate(:admin)
|
||||
UserAuthToken.generate!(user_id: admin.id)
|
||||
|
||||
first_post = Fabricate(:post, created_at: 35.days.ago)
|
||||
SiteSetting.welcome_topic_id = first_post.topic.id
|
||||
|
||||
expect(Site.show_welcome_topic_banner?(Guardian.new(admin))).to eq(false)
|
||||
end
|
||||
|
||||
it "returns false when welcome topic has been edited" do
|
||||
admin = Fabricate(:admin)
|
||||
UserAuthToken.generate!(user_id: admin.id)
|
||||
|
||||
first_post = Fabricate(:post, version: 2, created_at: 25.days.ago)
|
||||
SiteSetting.welcome_topic_id = first_post.topic.id
|
||||
|
||||
expect(Site.show_welcome_topic_banner?(Guardian.new(admin))).to eq(false)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -685,6 +685,9 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"show_welcome_topic_banner": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"archetypes": {
|
||||
"type": "array",
|
||||
"items":
|
||||
|
||||
@@ -112,4 +112,16 @@ RSpec.describe SiteSerializer do
|
||||
serialized = described_class.new(Site.new(admin_guardian), scope: admin_guardian, root: false).as_json
|
||||
expect(serialized[:shared_drafts_category_id]).to eq(nil)
|
||||
end
|
||||
|
||||
it 'includes show_welcome_topic_banner' do
|
||||
admin = Fabricate(:admin)
|
||||
admin_guardian = Guardian.new(admin)
|
||||
UserAuthToken.generate!(user_id: admin.id)
|
||||
|
||||
first_post = Fabricate(:post, created_at: 25.days.ago)
|
||||
SiteSetting.welcome_topic_id = first_post.topic.id
|
||||
|
||||
serialized = described_class.new(Site.new(admin_guardian), scope: admin_guardian, root: false).as_json
|
||||
expect(serialized[:show_welcome_topic_banner]).to eq(true)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user