discourse-assign/spec/integration/assign_spec.rb

62 lines
1.6 KiB
Ruby

require 'rails_helper'
describe 'integration tests' do
before do
SiteSetting.assign_enabled = true
end
it 'preloads data in topic list' do
admin = Fabricate(:admin)
post = create_post
list = TopicList.new("latest", admin, [post.topic])
TopicList.preload([post.topic], list)
# should not explode for now
end
describe 'for a private message' do
let(:post) { Fabricate(:private_message_post) }
let(:pm) { post.topic }
let(:user) { pm.allowed_users.first }
let(:user2) { pm.allowed_users.last }
let(:channels) do
[
"/private-messages/assigned",
"/private-messages/assigned/archive"
]
end
def assert_publish_topic_state(topic, user)
messages = MessageBus.track_publish do
yield
end
channels.each do |channel|
message = messages.find { |message| message.channel == channel }
expect(message.data[:topic_id]).to eq(topic.id)
expect(message.user_ids).to eq([user.id])
end
end
it 'publishes the right message on archive and move to inbox' do
assigner = TopicAssigner.new(pm, user)
assigner.assign(user)
assert_publish_topic_state(pm, user) do
UserArchivedMessage.archive!(user.id, pm.reload)
end
assert_publish_topic_state(pm, user) do
UserArchivedMessage.move_to_inbox!(user.id, pm.reload)
end
messages = MessageBus.track_publish do
UserArchivedMessage.archive!(user2.id, pm.reload)
end
expect(channels - messages.map(&:channel)).to eq(channels)
end
end
end