require "test_helper"
class MessageTest < ActiveSupport::TestCase
include ActionCable::TestHelper, ActiveJob::TestHelper
test "creating a message enqueues to push later" do
assert_enqueued_jobs 1, only: [ Room::PushMessageJob ] do
create_new_message_in rooms(:designers)
end
end
test "all emoji" do
assert Message.new(body: "šš¤").plain_text_body.all_emoji?
assert_not Message.new(body: "Haha! šš¤").plain_text_body.all_emoji?
assert_not Message.new(body: "š„\nmultiple lines\nšÆ").plain_text_body.all_emoji?
assert_not Message.new(body: "š„ šÆ").plain_text_body.all_emoji?
end
test "mentionees" do
message = Message.new room: rooms(:pets), body: "
Hey #{mention_attachment_for(:david)}
", creator: users(:jason), client_message_id: "earth"
assert_equal [ users(:david) ], message.mentionees
message_with_duplicate_mentions = Message.new room: rooms(:pets), body: "Hey #{mention_attachment_for(:david)} #{mention_attachment_for(:david)}
", creator: users(:jason), client_message_id: "earth"
assert_equal [ users(:david) ], message.mentionees
message_mentioning_a_non_member = Message.new room: rooms(:pets), body: "Hey #{mention_attachment_for(:kevin)}
", creator: users(:jason), client_message_id: "earth"
assert_equal [], message_mentioning_a_non_member.mentionees
end
private
def create_new_message_in(room)
room.messages.create!(creator: users(:jason), body: "Hello", client_message_id: "123")
end
end