FEATURE: add welcome topic cta banner (#17821)

This commit is contained in:
Arpit Jalan
2022-08-09 21:52:39 +05:30
committed by GitHub
parent 5138347e48
commit d57bea4de3
15 changed files with 169 additions and 8 deletions

View File

@@ -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

View File

@@ -685,6 +685,9 @@
]
}
},
"show_welcome_topic_banner": {
"type": "boolean"
},
"archetypes": {
"type": "array",
"items":

View File

@@ -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