diff --git a/spec/components/post_merger_spec.rb b/spec/components/post_merger_spec.rb index c620a8ea8b4..250712968af 100644 --- a/spec/components/post_merger_spec.rb +++ b/spec/components/post_merger_spec.rb @@ -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) diff --git a/spec/components/post_revisor_spec.rb b/spec/components/post_revisor_spec.rb index c057daaf2eb..7f0f950add2 100644 --- a/spec/components/post_revisor_spec.rb +++ b/spec/components/post_revisor_spec.rb @@ -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 diff --git a/spec/components/site_setting_extension_spec.rb b/spec/components/site_setting_extension_spec.rb index 5d87e8f9838..1c2d8cb7f9f 100644 --- a/spec/components/site_setting_extension_spec.rb +++ b/spec/components/site_setting_extension_spec.rb @@ -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 diff --git a/spec/controllers/uploads_controller_spec.rb b/spec/controllers/uploads_controller_spec.rb index 480da63c509..f77645e5433 100644 --- a/spec/controllers/uploads_controller_spec.rb +++ b/spec/controllers/uploads_controller_spec.rb @@ -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 diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 65461bfd241..cd075118343 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -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] diff --git a/spec/requests/admin/emojis_controller_spec.rb b/spec/requests/admin/emojis_controller_spec.rb index 329778e50e7..d2d02505840 100644 --- a/spec/requests/admin/emojis_controller_spec.rb +++ b/spec/requests/admin/emojis_controller_spec.rb @@ -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) diff --git a/spec/support/diagnostics_helper.rb b/spec/support/diagnostics_helper.rb index bab725d8179..11d131c98d6 100644 --- a/spec/support/diagnostics_helper.rb +++ b/spec/support/diagnostics_helper.rb @@ -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