mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 23:54:16 +08:00
9dc6325821
We will be collecting the logo URL and the site's default locale values along with existing basic details to display the site on the Discourse Discover listing page. It will be included only if the site is opted-in by enabling the "`include_in_discourse_discover`" site setting. Also, we no longer going to use `about.json` and `site/statistics.json` endpoints retrieve these data. We will be using only the `site/basic-info.json` endpoint.
105 lines
3.8 KiB
Ruby
105 lines
3.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe SiteController do
|
|
describe "#basic_info" do
|
|
it "is visible always even for sites requiring login" do
|
|
upload = Fabricate(:upload)
|
|
|
|
SiteSetting.login_required = true
|
|
SiteSetting.title = "Hammer Time"
|
|
SiteSetting.site_description = "A time for Hammer"
|
|
SiteSetting.logo = upload
|
|
SiteSetting.logo_small = upload
|
|
SiteSetting.apple_touch_icon = upload
|
|
SiteSetting.mobile_logo = upload
|
|
SiteSetting.include_in_discourse_discover = true
|
|
Theme.clear_default!
|
|
|
|
get "/site/basic-info.json", headers: { "HTTP_USER_AGENT" => "Discourse Hub" }
|
|
json = response.parsed_body
|
|
|
|
expected_url = UrlHelper.absolute(upload.url)
|
|
|
|
expect(json["title"]).to eq("Hammer Time")
|
|
expect(json["description"]).to eq("A time for Hammer")
|
|
expect(json["logo_url"]).to eq(expected_url)
|
|
expect(json["apple_touch_icon_url"]).to eq(expected_url)
|
|
expect(json["logo_small_url"]).to eq(expected_url)
|
|
expect(json["mobile_logo_url"]).to eq(expected_url)
|
|
expect(json["header_primary_color"]).to eq("333333")
|
|
expect(json["header_background_color"]).to eq("ffffff")
|
|
expect(json["login_required"]).to eq(true)
|
|
expect(json["discourse_discover_enrolled"]).to eq(true)
|
|
end
|
|
|
|
it "skips `discourse_discover_enrolled` if `include_in_discourse_discover` setting disabled" do
|
|
SiteSetting.include_in_discourse_discover = false
|
|
|
|
get "/site/basic-info.json"
|
|
json = response.parsed_body
|
|
|
|
expect(json.keys).not_to include("discourse_discover_enrolled")
|
|
end
|
|
end
|
|
|
|
describe "#statistics" do
|
|
it "is visible for sites requiring login" do
|
|
SiteSetting.login_required = true
|
|
SiteSetting.share_anonymized_statistics = true
|
|
|
|
get "/site/statistics.json"
|
|
json = response.parsed_body
|
|
|
|
expect(response.status).to eq(200)
|
|
expect(json["topics_count"]).to be_present
|
|
expect(json["posts_count"]).to be_present
|
|
expect(json["users_count"]).to be_present
|
|
expect(json["topics_7_days"]).to be_present
|
|
expect(json["topics_30_days"]).to be_present
|
|
expect(json["posts_7_days"]).to be_present
|
|
expect(json["posts_30_days"]).to be_present
|
|
expect(json["users_7_days"]).to be_present
|
|
expect(json["users_30_days"]).to be_present
|
|
expect(json["active_users_7_days"]).to be_present
|
|
expect(json["active_users_30_days"]).to be_present
|
|
expect(json["likes_count"]).to be_present
|
|
expect(json["likes_7_days"]).to be_present
|
|
expect(json["likes_30_days"]).to be_present
|
|
end
|
|
|
|
it "is not visible if site setting share_anonymized_statistics is disabled" do
|
|
SiteSetting.share_anonymized_statistics = false
|
|
|
|
get "/site/statistics.json"
|
|
expect(response).to redirect_to "/"
|
|
end
|
|
|
|
it "returns exposable stats only" do
|
|
Discourse.redis.del(About.stats_cache_key)
|
|
|
|
SiteSetting.login_required = true
|
|
SiteSetting.share_anonymized_statistics = true
|
|
|
|
plugin = Plugin::Instance.new
|
|
plugin.register_stat("private_stat", expose_via_api: false) do
|
|
{ :last_day => 1, "7_days" => 2, "30_days" => 3, :count => 4 }
|
|
end
|
|
plugin.register_stat("exposable_stat", expose_via_api: true) do
|
|
{ :last_day => 11, "7_days" => 12, "30_days" => 13, :count => 14 }
|
|
end
|
|
|
|
get "/site/statistics.json"
|
|
json = response.parsed_body
|
|
|
|
expect(json["exposable_stat_last_day"]).to be(11)
|
|
expect(json["exposable_stat_7_days"]).to be(12)
|
|
expect(json["exposable_stat_30_days"]).to be(13)
|
|
expect(json["exposable_stat_count"]).to be(14)
|
|
expect(json["private_stat_last_day"]).not_to be_present
|
|
expect(json["private_stat_7_days"]).not_to be_present
|
|
expect(json["private_stat_30_days"]).not_to be_present
|
|
expect(json["private_stat_count"]).not_to be_present
|
|
end
|
|
end
|
|
end
|