mirror of
https://github.com/discourse/discourse.git
synced 2026-08-06 13:08:40 +08:00
98 lines
3.3 KiB
Ruby
Vendored
98 lines
3.3 KiB
Ruby
Vendored
# frozen_string_literal: true
|
|
|
|
RSpec.describe "Multisite UpcomingChanges cache", type: :multisite do
|
|
before do
|
|
mock_upcoming_change_metadata(
|
|
{
|
|
enable_upload_debug_mode: {
|
|
impact: "other,developers",
|
|
status: :permanent,
|
|
impact_type: "other",
|
|
impact_role: "developers",
|
|
},
|
|
},
|
|
)
|
|
Rails.stubs(:public_path).returns(Rails.root.join("spec/fixtures").to_s)
|
|
end
|
|
|
|
after do
|
|
%w[default second].each do |site|
|
|
RailsMultisite::ConnectionManagement.with_connection(site) do
|
|
Discourse.cache.delete(UpcomingChanges.current_statuses_cache_key)
|
|
Discourse.cache.delete(UpcomingChanges.permanent_upcoming_changes_cache_key)
|
|
end
|
|
end
|
|
end
|
|
|
|
it "keeps current_statuses tied to each site's upcoming_change_events" do
|
|
test_multisite_connection("default") do
|
|
Discourse.cache.delete(UpcomingChanges.current_statuses_cache_key)
|
|
UpcomingChangeEvent.where(upcoming_change_name: "enable_upload_debug_mode").delete_all
|
|
UpcomingChangeEvent.create!(
|
|
event_type: :status_changed,
|
|
upcoming_change_name: "enable_upload_debug_mode",
|
|
event_data: {
|
|
"previous_value" => "stable",
|
|
"new_value" => "permanent",
|
|
},
|
|
)
|
|
|
|
expect(UpcomingChanges.current_statuses["enable_upload_debug_mode"][:status]).to eq(
|
|
"permanent",
|
|
)
|
|
end
|
|
|
|
test_multisite_connection("second") do
|
|
Discourse.cache.delete(UpcomingChanges.current_statuses_cache_key)
|
|
UpcomingChangeEvent.where(upcoming_change_name: "enable_upload_debug_mode").delete_all
|
|
|
|
expect(UpcomingChanges.current_statuses).to eq({})
|
|
end
|
|
end
|
|
|
|
it "caches current_statuses on the default site" do
|
|
test_multisite_connection("default") do
|
|
Discourse.cache.delete(UpcomingChanges.current_statuses_cache_key)
|
|
UpcomingChangeEvent.create!(
|
|
event_type: :status_changed,
|
|
upcoming_change_name: "multisite_cache_setting",
|
|
event_data: {
|
|
"previous_value" => nil,
|
|
"new_value" => "beta",
|
|
},
|
|
)
|
|
|
|
allow(DB).to receive(:query).and_call_original
|
|
2.times { UpcomingChanges.current_statuses }
|
|
expect(DB).to have_received(:query).once
|
|
end
|
|
end
|
|
|
|
it "caches current_statuses on the second site" do
|
|
test_multisite_connection("second") do
|
|
Discourse.cache.delete(UpcomingChanges.current_statuses_cache_key)
|
|
|
|
allow(DB).to receive(:query).and_call_original
|
|
2.times { UpcomingChanges.current_statuses }
|
|
expect(DB).to have_received(:query).once
|
|
end
|
|
end
|
|
|
|
it "caches permanent_upcoming_changes on the default site" do
|
|
test_multisite_connection("default") do
|
|
Discourse.cache.delete(UpcomingChanges.permanent_upcoming_changes_cache_key)
|
|
allow(UpcomingChanges::List).to receive(:call).and_call_original
|
|
2.times { UpcomingChanges.permanent_upcoming_changes }
|
|
expect(UpcomingChanges::List).to have_received(:call).once
|
|
end
|
|
end
|
|
|
|
it "caches permanent_upcoming_changes on the second site" do
|
|
test_multisite_connection("second") do
|
|
Discourse.cache.delete(UpcomingChanges.permanent_upcoming_changes_cache_key)
|
|
allow(UpcomingChanges::List).to receive(:call).and_call_original
|
|
2.times { UpcomingChanges.permanent_upcoming_changes }
|
|
expect(UpcomingChanges::List).to have_received(:call).once
|
|
end
|
|
end
|
|
end
|