mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 09:26:54 -06:00
Improve MessageBus.track_publish
to allow filter by channel.
This commit is contained in:
parent
b295a39977
commit
c872225762
@ -15,9 +15,8 @@ describe PostMerger do
|
||||
reply3 = create_post(topic: topic, raw: 'The third reply', post_number: 4, user: user)
|
||||
replies = [reply3, reply2, reply1]
|
||||
|
||||
message = MessageBus.track_publish { PostMerger.new(admin, replies).merge }.last
|
||||
message = MessageBus.track_publish("/topic/#{topic.id}") { PostMerger.new(admin, replies).merge }.last
|
||||
|
||||
expect(message.channel).to eq("/topic/#{topic.id}")
|
||||
expect(message.data[:type]).to eq(:revised)
|
||||
expect(message.data[:post_number]).to eq(reply3.post_number)
|
||||
|
||||
|
@ -382,11 +382,10 @@ describe PostRevisor do
|
||||
it "should publish topic changes to clients" do
|
||||
revisor = described_class.new(topic.ordered_posts.first, topic)
|
||||
|
||||
messages = MessageBus.track_publish do
|
||||
message = MessageBus.track_publish("/topic/#{topic.id}") do
|
||||
revisor.revise!(newuser, title: 'this is a test topic')
|
||||
end
|
||||
end.first
|
||||
|
||||
message = messages.find { |m| m.channel == "/topic/#{topic.id}" }
|
||||
payload = message.data
|
||||
expect(payload[:reload_topic]).to eq(true)
|
||||
end
|
||||
|
@ -145,11 +145,11 @@ describe SiteSettingExtension do
|
||||
settings.setting("test_setting", 100)
|
||||
settings.setting("test_setting", nil, client: true)
|
||||
|
||||
messages = MessageBus.track_publish do
|
||||
message = MessageBus.track_publish('/client_settings') do
|
||||
settings.test_setting = 88
|
||||
end
|
||||
end.first
|
||||
|
||||
expect(messages.map(&:channel).include?('/client_settings')).to eq(true)
|
||||
expect(message).to be_present
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -52,13 +52,11 @@ describe UploadsController do
|
||||
it 'is successful with an image' do
|
||||
Jobs.expects(:enqueue).with(:create_avatar_thumbnails, anything)
|
||||
|
||||
message = MessageBus.track_publish do
|
||||
message = MessageBus.track_publish('/uploads/avatar') do
|
||||
post :create, params: { file: logo, type: "avatar", format: :json }
|
||||
end.find { |m| m.channel == "/uploads/avatar" }
|
||||
end.first
|
||||
|
||||
expect(response.status).to eq 200
|
||||
|
||||
expect(message.channel).to eq("/uploads/avatar")
|
||||
expect(message.data["id"]).to be
|
||||
end
|
||||
|
||||
@ -67,12 +65,11 @@ describe UploadsController do
|
||||
|
||||
Jobs.expects(:enqueue).never
|
||||
|
||||
message = MessageBus.track_publish do
|
||||
message = MessageBus.track_publish('/uploads/composer') do
|
||||
post :create, params: { file: text_file, type: "composer", format: :json }
|
||||
end.find { |m| m.channel == "/uploads/composer" }
|
||||
end.first
|
||||
|
||||
expect(response.status).to eq 200
|
||||
expect(message.channel).to eq("/uploads/composer")
|
||||
expect(message.data["id"]).to be
|
||||
end
|
||||
|
||||
@ -103,7 +100,7 @@ describe UploadsController do
|
||||
log_in :admin
|
||||
Jobs.expects(:enqueue).with(:create_avatar_thumbnails, anything).never
|
||||
|
||||
message = MessageBus.track_publish do
|
||||
message = MessageBus.track_publish('/uploads/profile_background') do
|
||||
post :create, params: {
|
||||
file: logo,
|
||||
retain_hours: 100,
|
||||
@ -119,7 +116,7 @@ describe UploadsController do
|
||||
it 'requires a file' do
|
||||
Jobs.expects(:enqueue).never
|
||||
|
||||
message = MessageBus.track_publish do
|
||||
message = MessageBus.track_publish('/uploads/composer') do
|
||||
post :create, params: { type: "composer", format: :json }
|
||||
end.first
|
||||
|
||||
@ -157,14 +154,14 @@ describe UploadsController do
|
||||
SiteSetting.allow_staff_to_upload_any_file_in_pm = true
|
||||
@user.update_columns(moderator: true)
|
||||
|
||||
message = MessageBus.track_publish do
|
||||
message = MessageBus.track_publish('/uploads/composer') do
|
||||
post :create, params: {
|
||||
file: text_file,
|
||||
type: "composer",
|
||||
for_private_message: "true",
|
||||
format: :json
|
||||
}
|
||||
end.find { |m| m.channel = '/uploads/composer' }
|
||||
end.first
|
||||
|
||||
expect(response).to be_success
|
||||
expect(message.data["id"]).to be
|
||||
@ -173,13 +170,11 @@ describe UploadsController do
|
||||
it 'returns an error when it could not determine the dimensions of an image' do
|
||||
Jobs.expects(:enqueue).with(:create_avatar_thumbnails, anything).never
|
||||
|
||||
message = MessageBus.track_publish do
|
||||
message = MessageBus.track_publish('/uploads/composer') do
|
||||
post :create, params: { file: fake_jpg, type: "composer", format: :json }
|
||||
end.find { |m| m.channel == '/uploads/composer' }
|
||||
end.first
|
||||
|
||||
expect(response.status).to eq 200
|
||||
|
||||
expect(message.channel).to eq("/uploads/composer")
|
||||
expect(message.data["errors"]).to contain_exactly(I18n.t("upload.images.size_not_found"))
|
||||
end
|
||||
|
||||
|
@ -1420,9 +1420,8 @@ describe User do
|
||||
let(:user) { Fabricate(:user) }
|
||||
|
||||
it 'should publish the right message' do
|
||||
message = MessageBus.track_publish { user.logged_out }.find { |m| m.channel == '/logout' }
|
||||
message = MessageBus.track_publish('/logout') { user.logged_out }.first
|
||||
|
||||
expect(message.channel).to eq('/logout')
|
||||
expect(message.data).to eq(user.id)
|
||||
end
|
||||
end
|
||||
@ -1527,9 +1526,9 @@ describe User do
|
||||
notification = Fabricate(:notification, user: user)
|
||||
notification2 = Fabricate(:notification, user: user, read: true)
|
||||
|
||||
message = MessageBus.track_publish do
|
||||
message = MessageBus.track_publish("/notification/#{user.id}") do
|
||||
user.publish_notifications_state
|
||||
end.find { |m| m.channel = "/notification/#{user.id}" }
|
||||
end.first
|
||||
|
||||
expect(message.data[:recent]).to eq([
|
||||
[notification2.id, true], [notification.id, false]
|
||||
|
@ -11,14 +11,13 @@ RSpec.describe Admin::EmojisController do
|
||||
describe "#create" do
|
||||
describe 'when upload is invalid' do
|
||||
it 'should publish the right error' do
|
||||
message = MessageBus.track_publish do
|
||||
message = MessageBus.track_publish("/uploads/emoji") do
|
||||
post "/admin/customize/emojis.json", params: {
|
||||
name: 'test',
|
||||
file: fixture_file_upload("#{Rails.root}/spec/fixtures/images/fake.jpg")
|
||||
}
|
||||
end.find { |m| m.channel == "/uploads/emoji" }
|
||||
end.first
|
||||
|
||||
expect(message.channel).to eq("/uploads/emoji")
|
||||
expect(message.data["errors"]).to eq([I18n.t('upload.images.size_not_found')])
|
||||
end
|
||||
end
|
||||
@ -27,14 +26,12 @@ RSpec.describe Admin::EmojisController do
|
||||
it 'should publish the right error' do
|
||||
CustomEmoji.create!(name: 'test', upload: upload)
|
||||
|
||||
message = MessageBus.track_publish do
|
||||
message = MessageBus.track_publish("/uploads/emoji") do
|
||||
post "/admin/customize/emojis.json", params: {
|
||||
name: 'test',
|
||||
file: fixture_file_upload("#{Rails.root}/spec/fixtures/images/logo.png")
|
||||
}
|
||||
end.find { |m| m.channel == "/uploads/emoji" }
|
||||
|
||||
expect(message.channel).to eq("/uploads/emoji")
|
||||
end.first
|
||||
|
||||
expect(message.data["errors"]).to eq([
|
||||
"Name #{I18n.t('activerecord.errors.models.custom_emoji.attributes.name.taken')}"
|
||||
@ -45,18 +42,17 @@ RSpec.describe Admin::EmojisController do
|
||||
it 'should allow an admin to add a custom emoji' do
|
||||
Emoji.expects(:clear_cache)
|
||||
|
||||
message = MessageBus.track_publish do
|
||||
message = MessageBus.track_publish("/uploads/emoji") do
|
||||
post "/admin/customize/emojis.json", params: {
|
||||
name: 'test',
|
||||
file: fixture_file_upload("#{Rails.root}/spec/fixtures/images/logo.png")
|
||||
}
|
||||
end.find { |m| m.channel == "/uploads/emoji" }
|
||||
end.first
|
||||
|
||||
custom_emoji = CustomEmoji.last
|
||||
upload = custom_emoji.upload
|
||||
|
||||
expect(upload.original_filename).to eq('logo.png')
|
||||
expect(message.channel).to eq("/uploads/emoji")
|
||||
expect(message.data["errors"]).to eq(nil)
|
||||
expect(message.data["name"]).to eq(custom_emoji.name)
|
||||
expect(message.data["url"]).to eq(upload.url)
|
||||
|
@ -1,7 +1,7 @@
|
||||
module MessageBus::DiagnosticsHelper
|
||||
def publish(channel, data, opts = nil)
|
||||
id = super(channel, data, opts)
|
||||
if @tracking
|
||||
if @tracking && (@channel.nil? || @channel == channel)
|
||||
m = MessageBus::Message.new(-1, id, channel, data)
|
||||
m.user_ids = opts[:user_ids] if opts
|
||||
m.group_ids = opts[:group_ids] if opts
|
||||
@ -10,7 +10,8 @@ module MessageBus::DiagnosticsHelper
|
||||
id
|
||||
end
|
||||
|
||||
def track_publish
|
||||
def track_publish(channel = nil)
|
||||
@channel = channel
|
||||
@tracking = tracking = []
|
||||
yield
|
||||
tracking
|
||||
|
Loading…
Reference in New Issue
Block a user