mirror of
https://github.com/discourse/discourse.git
synced 2025-02-21 21:55:40 +08:00
DEV: Rename direct message related models
This is a followup of the previous refactor where we created two new models to handle all the dedicated logic that was present in the `ChatChannel` model. For the sake of consistency, `DMChannel` has been renamed to `DirectMessageChannel` and the previous `DirectMessageChannel` model is now named `DirectMessage`. This should help reasoning about direct messages.
This commit is contained in:
parent
7e992cb299
commit
abcaa1a961
@ -129,7 +129,7 @@ class Chat::ChatChannelsController < Chat::ChatBaseController
|
||||
if users.count > 0
|
||||
ChatChannel
|
||||
.includes(chatable: :users)
|
||||
.joins(direct_message_channel: :direct_message_users)
|
||||
.joins(direct_message: :direct_message_users)
|
||||
.group(1)
|
||||
.having(
|
||||
"ARRAY[?] <@ ARRAY_AGG(user_id) AND ARRAY[?] && ARRAY_AGG(user_id)",
|
||||
|
@ -25,13 +25,9 @@ class Chat::DirectMessagesController < Chat::ChatBaseController
|
||||
guardian.ensure_can_chat!(current_user)
|
||||
users = users_from_usernames(current_user, params)
|
||||
|
||||
direct_message_channel = DirectMessageChannel.for_user_ids(users.map(&:id).uniq)
|
||||
if direct_message_channel
|
||||
chat_channel =
|
||||
ChatChannel.find_by(
|
||||
chatable_id: direct_message_channel.id,
|
||||
chatable_type: "DirectMessageChannel",
|
||||
)
|
||||
direct_message = DirectMessage.for_user_ids(users.map(&:id).uniq)
|
||||
if direct_message
|
||||
chat_channel = ChatChannel.find_by(chatable: direct_message)
|
||||
render_serialized(
|
||||
chat_channel,
|
||||
ChatChannelSerializer,
|
||||
|
@ -4,8 +4,8 @@ class ChatChannel < ActiveRecord::Base
|
||||
include Trashable
|
||||
|
||||
belongs_to :chatable, polymorphic: true
|
||||
belongs_to :direct_message_channel,
|
||||
-> { where(chat_channels: { chatable_type: "DirectMessageChannel" }) },
|
||||
belongs_to :direct_message,
|
||||
-> { where(chat_channels: { chatable_type: "DirectMessage" }) },
|
||||
foreign_key: "chatable_id"
|
||||
|
||||
has_many :chat_messages
|
||||
@ -37,7 +37,7 @@ class ChatChannel < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def chatable_types
|
||||
public_channel_chatable_types << "DirectMessageChannel"
|
||||
public_channel_chatable_types << "DirectMessage"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -28,7 +28,7 @@ class ChatMessage < ActiveRecord::Base
|
||||
}
|
||||
|
||||
scope :in_dm_channel,
|
||||
-> { joins(:chat_channel).where(chat_channel: { chatable_type: "DirectMessageChannel" }) }
|
||||
-> { joins(:chat_channel).where(chat_channel: { chatable_type: "DirectMessage" }) }
|
||||
|
||||
scope :created_before, ->(date) { where("chat_messages.created_at < ?", date) }
|
||||
|
||||
|
@ -14,13 +14,6 @@ module Chatable
|
||||
private
|
||||
|
||||
def channel_class
|
||||
case self
|
||||
when Category
|
||||
CategoryChannel
|
||||
when DirectMessageChannel
|
||||
DMChannel
|
||||
else
|
||||
raise "Unknown chatable #{self}"
|
||||
end
|
||||
"#{self.class}Channel".safe_constantize || raise("Unknown chatable #{self}")
|
||||
end
|
||||
end
|
||||
|
@ -1,22 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# TODO: merge DMChannel and DirectMessageChannel models together
|
||||
class DMChannel < ChatChannel
|
||||
alias_attribute :direct_message_channel, :chatable
|
||||
|
||||
def direct_message_channel?
|
||||
true
|
||||
end
|
||||
|
||||
def allowed_user_ids
|
||||
direct_message_channel.user_ids
|
||||
end
|
||||
|
||||
def read_restricted?
|
||||
true
|
||||
end
|
||||
|
||||
def title(user)
|
||||
direct_message_channel.chat_channel_title_for_user(self, user)
|
||||
end
|
||||
end
|
56
plugins/chat/app/models/direct_message.rb
Normal file
56
plugins/chat/app/models/direct_message.rb
Normal file
@ -0,0 +1,56 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class DirectMessage < ActiveRecord::Base
|
||||
self.table_name = "direct_message_channels"
|
||||
|
||||
include Chatable
|
||||
|
||||
has_many :direct_message_users, foreign_key: :direct_message_channel_id
|
||||
has_many :users, through: :direct_message_users
|
||||
|
||||
def self.for_user_ids(user_ids)
|
||||
joins(:users)
|
||||
.group("direct_message_channels.id")
|
||||
.having("ARRAY[?] = ARRAY_AGG(users.id ORDER BY users.id)", user_ids.sort)
|
||||
&.first
|
||||
end
|
||||
|
||||
def user_can_access?(user)
|
||||
users.include?(user)
|
||||
end
|
||||
|
||||
def chat_channel_title_for_user(chat_channel, acting_user)
|
||||
users =
|
||||
(direct_message_users.map(&:user) - [acting_user]).map { |user| user || DeletedChatUser.new }
|
||||
|
||||
# direct message to self
|
||||
if users.empty?
|
||||
return I18n.t("chat.channel.dm_title.single_user", user: "@#{acting_user.username}")
|
||||
end
|
||||
|
||||
# all users deleted
|
||||
return chat_channel.id if !users.first
|
||||
|
||||
usernames_formatted = users.sort_by(&:username).map { |u| "@#{u.username}" }
|
||||
if usernames_formatted.size > 5
|
||||
return(
|
||||
I18n.t(
|
||||
"chat.channel.dm_title.multi_user_truncated",
|
||||
users: usernames_formatted[0..4].join(", "),
|
||||
leftover: usernames_formatted.length - 5,
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
I18n.t("chat.channel.dm_title.multi_user", users: usernames_formatted.join(", "))
|
||||
end
|
||||
end
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: direct_message_channels
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
#
|
@ -1,54 +1,21 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class DirectMessageChannel < ActiveRecord::Base
|
||||
include Chatable
|
||||
class DirectMessageChannel < ChatChannel
|
||||
alias_attribute :direct_message, :chatable
|
||||
|
||||
has_many :direct_message_users
|
||||
has_many :users, through: :direct_message_users
|
||||
|
||||
def self.for_user_ids(user_ids)
|
||||
joins(:users)
|
||||
.group("direct_message_channels.id")
|
||||
.having("ARRAY[?] = ARRAY_AGG(users.id ORDER BY users.id)", user_ids.sort)
|
||||
&.first
|
||||
def direct_message_channel?
|
||||
true
|
||||
end
|
||||
|
||||
def user_can_access?(user)
|
||||
users.include?(user)
|
||||
def allowed_user_ids
|
||||
direct_message.user_ids
|
||||
end
|
||||
|
||||
def chat_channel_title_for_user(chat_channel, acting_user)
|
||||
users =
|
||||
(direct_message_users.map(&:user) - [acting_user]).map { |user| user || DeletedChatUser.new }
|
||||
def read_restricted?
|
||||
true
|
||||
end
|
||||
|
||||
# direct message to self
|
||||
if users.empty?
|
||||
return I18n.t("chat.channel.dm_title.single_user", user: "@#{acting_user.username}")
|
||||
end
|
||||
|
||||
# all users deleted
|
||||
return chat_channel.id if !users.first
|
||||
|
||||
usernames_formatted = users.sort_by(&:username).map { |u| "@#{u.username}" }
|
||||
if usernames_formatted.size > 5
|
||||
return(
|
||||
I18n.t(
|
||||
"chat.channel.dm_title.multi_user_truncated",
|
||||
users: usernames_formatted[0..4].join(", "),
|
||||
leftover: usernames_formatted.length - 5,
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
I18n.t("chat.channel.dm_title.multi_user", users: usernames_formatted.join(", "))
|
||||
def title(user)
|
||||
direct_message.chat_channel_title_for_user(self, user)
|
||||
end
|
||||
end
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: direct_message_channels
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
#
|
||||
|
@ -1,7 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class DirectMessageUser < ActiveRecord::Base
|
||||
belongs_to :direct_message_channel
|
||||
belongs_to :direct_message, foreign_key: :direct_message_channel_id
|
||||
belongs_to :user
|
||||
end
|
||||
|
||||
|
@ -44,8 +44,8 @@ class ChatChannelSerializer < ApplicationSerializer
|
||||
case object.chatable_type
|
||||
when "Category"
|
||||
BasicCategorySerializer.new(object.chatable, root: false).as_json
|
||||
when "DirectMessageChannel"
|
||||
DirectMessageChannelSerializer.new(object.chatable, scope: scope, root: false).as_json
|
||||
when "DirectMessage"
|
||||
DirectMessageSerializer.new(object.chatable, scope: scope, root: false).as_json
|
||||
when "Site"
|
||||
nil
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class DirectMessageChannelSerializer < ApplicationSerializer
|
||||
class DirectMessageSerializer < ApplicationSerializer
|
||||
has_many :users, serializer: UserWithCustomFieldsAndStatusSerializer, embed: :objects
|
||||
|
||||
def users
|
@ -7,7 +7,7 @@ import { ajax } from "discourse/lib/ajax";
|
||||
import { escapeExpression } from "discourse/lib/utilities";
|
||||
|
||||
export const CHATABLE_TYPES = {
|
||||
directMessageChannel: "DirectMessageChannel",
|
||||
directMessageChannel: "DirectMessage",
|
||||
categoryChannel: "Category",
|
||||
};
|
||||
export const CHANNEL_STATUSES = {
|
||||
|
@ -0,0 +1,9 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class MigrateDmChannels < ActiveRecord::Migration[7.0]
|
||||
def up
|
||||
DB.exec(
|
||||
"UPDATE chat_channels SET type='DirectMessageChannel', chatable_type='DirectMessage' WHERE chatable_type = 'DirectMessageChannel'",
|
||||
)
|
||||
end
|
||||
end
|
@ -53,7 +53,7 @@ module Chat::ChatChannelFetcher
|
||||
.select(:id)
|
||||
.joins(
|
||||
"INNER JOIN direct_message_channels ON direct_message_channels.id = chat_channels.chatable_id
|
||||
AND chat_channels.chatable_type = 'DirectMessageChannel'
|
||||
AND chat_channels.chatable_type = 'DirectMessage'
|
||||
INNER JOIN direct_message_users ON direct_message_users.direct_message_channel_id = direct_message_channels.id",
|
||||
)
|
||||
.where("direct_message_users.user_id = :user_id", user_id: guardian.user.id)
|
||||
@ -134,7 +134,7 @@ module Chat::ChatChannelFetcher
|
||||
query
|
||||
.joins(:user_chat_channel_memberships)
|
||||
.where(user_chat_channel_memberships: { user_id: user_id, following: true })
|
||||
.where(chatable_type: "DirectMessageChannel")
|
||||
.where(chatable_type: "DirectMessage")
|
||||
.where("chat_channels.id IN (#{generate_allowed_channel_ids_sql(guardian)})")
|
||||
.order(last_message_sent_at: :desc)
|
||||
.to_a
|
||||
|
@ -50,7 +50,7 @@ class Chat::ChatMailer
|
||||
(uccm.last_unread_mention_when_emailed_id IS NULL OR c_msg.id > uccm.last_unread_mention_when_emailed_id) AND
|
||||
(
|
||||
(uccm.user_id = c_mentions.user_id AND uccm.following IS true AND cc.chatable_type = 'Category') OR
|
||||
(cc.chatable_type = 'DirectMessageChannel')
|
||||
(cc.chatable_type = 'DirectMessage')
|
||||
)
|
||||
SQL
|
||||
.group("users.id, uccm.user_id")
|
||||
|
@ -7,13 +7,13 @@ module Chat::DirectMessageChannelCreator
|
||||
def self.create!(acting_user:, target_users:)
|
||||
Guardian.new(acting_user).ensure_can_create_direct_message!
|
||||
target_users.uniq!
|
||||
direct_messages_channel = DirectMessageChannel.for_user_ids(target_users.map(&:id))
|
||||
if direct_messages_channel
|
||||
chat_channel = ChatChannel.find_by!(chatable: direct_messages_channel)
|
||||
direct_message = DirectMessage.for_user_ids(target_users.map(&:id))
|
||||
if direct_message
|
||||
chat_channel = ChatChannel.find_by!(chatable: direct_message)
|
||||
else
|
||||
ensure_actor_can_communicate!(acting_user, target_users)
|
||||
direct_messages_channel = DirectMessageChannel.create!(user_ids: target_users.map(&:id))
|
||||
chat_channel = direct_messages_channel.create_chat_channel!
|
||||
direct_message = DirectMessage.create!(user_ids: target_users.map(&:id))
|
||||
chat_channel = direct_message.create_chat_channel!
|
||||
end
|
||||
|
||||
update_memberships(acting_user, target_users, chat_channel.id)
|
||||
|
@ -6,7 +6,7 @@ require "faker"
|
||||
module DiscourseDev
|
||||
class DirectChannel < Record
|
||||
def initialize
|
||||
super(::DirectMessageChannel, 5)
|
||||
super(::DirectMessage, 5)
|
||||
end
|
||||
|
||||
def data
|
||||
|
@ -11,7 +11,7 @@ module DiscourseDev
|
||||
|
||||
def data
|
||||
if Faker::Boolean.boolean(true_ratio: 0.5)
|
||||
channel = ::ChatChannel.where(chatable_type: "DirectMessageChannel").order("RANDOM()").first
|
||||
channel = ::ChatChannel.where(chatable_type: "DirectMessage").order("RANDOM()").first
|
||||
channel.user_chat_channel_memberships.update_all(following: true)
|
||||
user = channel.chatable.users.order("RANDOM()").first
|
||||
else
|
||||
|
@ -20,7 +20,7 @@ module Chat::UserNotificationsExtension
|
||||
(uccm.last_unread_mention_when_emailed_id IS NULL OR chat_messages.id > uccm.last_unread_mention_when_emailed_id) AND
|
||||
(
|
||||
(cm.user_id = :user_id AND uccm.following IS true AND chat_channels.chatable_type = 'Category') OR
|
||||
(chat_channels.chatable_type = 'DirectMessageChannel')
|
||||
(chat_channels.chatable_type = 'DirectMessage')
|
||||
)
|
||||
SQL
|
||||
.to_a
|
||||
|
@ -153,10 +153,10 @@ module Chat::GuardianExtensions
|
||||
return false if !can_modify_channel_message?(message.chat_channel)
|
||||
|
||||
if message.user_id == current_user.id
|
||||
case chatable.class.name
|
||||
when "Category"
|
||||
case chatable
|
||||
when Category
|
||||
return can_see_category?(chatable)
|
||||
when "DirectMessageChannel"
|
||||
when DirectMessage
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
@ -129,8 +129,8 @@ after_initialize do
|
||||
load File.expand_path("../app/models/chat_mention.rb", __FILE__)
|
||||
load File.expand_path("../app/models/chat_upload.rb", __FILE__)
|
||||
load File.expand_path("../app/models/chat_webhook_event.rb", __FILE__)
|
||||
load File.expand_path("../app/models/d_m_channel.rb", __FILE__)
|
||||
load File.expand_path("../app/models/direct_message_channel.rb", __FILE__)
|
||||
load File.expand_path("../app/models/direct_message.rb", __FILE__)
|
||||
load File.expand_path("../app/models/direct_message_user.rb", __FILE__)
|
||||
load File.expand_path("../app/models/incoming_chat_webhook.rb", __FILE__)
|
||||
load File.expand_path("../app/models/reviewable_chat_message.rb", __FILE__)
|
||||
@ -149,7 +149,7 @@ after_initialize do
|
||||
"../app/serializers/user_with_custom_fields_and_status_serializer.rb",
|
||||
__FILE__,
|
||||
)
|
||||
load File.expand_path("../app/serializers/direct_message_channel_serializer.rb", __FILE__)
|
||||
load File.expand_path("../app/serializers/direct_message_serializer.rb", __FILE__)
|
||||
load File.expand_path("../app/serializers/incoming_chat_webhook_serializer.rb", __FILE__)
|
||||
load File.expand_path("../app/serializers/admin_chat_index_serializer.rb", __FILE__)
|
||||
load File.expand_path("../app/serializers/user_chat_message_bookmark_serializer.rb", __FILE__)
|
||||
|
@ -27,8 +27,14 @@ describe Chat::ChatMessageCreator do
|
||||
fab!(:public_chat_channel) { Fabricate(:category_channel) }
|
||||
fab!(:dm_chat_channel) do
|
||||
Fabricate(
|
||||
:dm_channel,
|
||||
chatable: Fabricate(:direct_message_channel, users: [user1, user2, user3]),
|
||||
:direct_message_channel,
|
||||
chatable: Fabricate(:direct_message, users: [user1, user2, user3]),
|
||||
)
|
||||
end
|
||||
let(:direct_message_channel) do
|
||||
Chat::DirectMessageChannelCreator.create!(
|
||||
acting_user: user1,
|
||||
target_users: [user1, user2],
|
||||
)
|
||||
end
|
||||
|
||||
@ -43,8 +49,7 @@ describe Chat::ChatMessageCreator do
|
||||
end
|
||||
|
||||
Group.refresh_automatic_groups!
|
||||
@direct_message_channel =
|
||||
Chat::DirectMessageChannelCreator.create!(acting_user: user1, target_users: [user1, user2])
|
||||
direct_message_channel
|
||||
end
|
||||
|
||||
describe "Integration tests with jobs running immediately" do
|
||||
@ -210,7 +215,7 @@ describe Chat::ChatMessageCreator do
|
||||
it "creates only mention notifications for users with access in private chat" do
|
||||
expect {
|
||||
Chat::ChatMessageCreator.create(
|
||||
chat_channel: @direct_message_channel,
|
||||
chat_channel: direct_message_channel,
|
||||
user: user1,
|
||||
content: "hello there @#{user2.username} and @#{user3.username}",
|
||||
)
|
||||
@ -221,7 +226,7 @@ describe Chat::ChatMessageCreator do
|
||||
it "creates a mention notifications for group users that are participating in private chat" do
|
||||
expect {
|
||||
Chat::ChatMessageCreator.create(
|
||||
chat_channel: @direct_message_channel,
|
||||
chat_channel: direct_message_channel,
|
||||
user: user1,
|
||||
content: "hello there @#{user_group.name}",
|
||||
)
|
||||
@ -261,7 +266,7 @@ describe Chat::ChatMessageCreator do
|
||||
user2.update(suspended_till: Time.now + 10.years)
|
||||
expect {
|
||||
Chat::ChatMessageCreator.create(
|
||||
chat_channel: @direct_message_channel,
|
||||
chat_channel: direct_message_channel,
|
||||
user: user1,
|
||||
content: "hello @#{user2.username}",
|
||||
)
|
||||
|
@ -10,14 +10,10 @@ end
|
||||
|
||||
Fabricator(:category_channel, from: :chat_channel, class_name: :category_channel) {}
|
||||
|
||||
Fabricator(:dm_channel, from: :chat_channel, class_name: :d_m_channel) do
|
||||
chatable { Fabricate(:direct_message_channel) }
|
||||
end
|
||||
|
||||
Fabricator(:direct_message_chat_channel, from: :chat_channel, class_name: :d_m_channel) do
|
||||
Fabricator(:direct_message_channel, from: :chat_channel, class_name: :direct_message_channel) do
|
||||
transient :users
|
||||
chatable do |attrs|
|
||||
Fabricate(:direct_message_channel, users: attrs[:users] || [Fabricate(:user), Fabricate(:user)])
|
||||
Fabricate(:direct_message, users: attrs[:users] || [Fabricate(:user), Fabricate(:user)])
|
||||
end
|
||||
status { :open }
|
||||
end
|
||||
@ -62,7 +58,7 @@ Fabricator(:reviewable_chat_message) do
|
||||
reviewable_scores { |p| [Fabricate.build(:reviewable_score, reviewable_id: p[:id])] }
|
||||
end
|
||||
|
||||
Fabricator(:direct_message_channel) { users { [Fabricate(:user), Fabricate(:user)] } }
|
||||
Fabricator(:direct_message) { users { [Fabricate(:user), Fabricate(:user)] } }
|
||||
|
||||
Fabricator(:chat_webhook_event) do
|
||||
chat_message { Fabricate(:chat_message) }
|
||||
|
@ -42,12 +42,7 @@ describe Jobs::DeleteOldChatMessages do
|
||||
)
|
||||
end
|
||||
|
||||
fab!(:dm_channel) do
|
||||
Fabricate(
|
||||
:chat_channel,
|
||||
chatable: Fabricate(:direct_message_channel, users: [Fabricate(:user)]),
|
||||
)
|
||||
end
|
||||
fab!(:dm_channel) { Fabricate(:direct_message_channel, users: [Fabricate(:user)]) }
|
||||
fab!(:dm_days_old_0) do
|
||||
Fabricate(:chat_message, chat_channel: dm_channel, message: "hi", created_at: base_date)
|
||||
end
|
||||
|
@ -54,8 +54,8 @@ describe Jobs::AutoJoinChannelBatch do
|
||||
end
|
||||
|
||||
it "does nothing if the channel chatable is not a category" do
|
||||
dm_channel = Fabricate(:direct_message_channel)
|
||||
channel.update!(chatable: dm_channel)
|
||||
direct_message = Fabricate(:direct_message)
|
||||
channel.update!(chatable: direct_message)
|
||||
|
||||
subject.execute(chat_channel_id: channel.id, starts_at: user.id, ends_at: user.id)
|
||||
|
||||
|
@ -5,7 +5,7 @@ require "rails_helper"
|
||||
describe Jobs::AutoManageChannelMemberships do
|
||||
let(:user) { Fabricate(:user, last_seen_at: 15.minutes.ago) }
|
||||
let(:category) { Fabricate(:category, user: user) }
|
||||
let(:channel) { Fabricate(:chat_channel, auto_join_users: true, chatable: category) }
|
||||
let(:channel) { Fabricate(:category_channel, auto_join_users: true, chatable: category) }
|
||||
|
||||
describe "queues batches to automatically add users to a channel" do
|
||||
it "queues a batch for users with channel access" do
|
||||
@ -17,8 +17,8 @@ describe Jobs::AutoManageChannelMemberships do
|
||||
end
|
||||
|
||||
it "does nothing when the chatable is not a category" do
|
||||
dm_channel = Fabricate(:direct_message_channel)
|
||||
channel.update!(chatable: dm_channel)
|
||||
direct_message = Fabricate(:direct_message)
|
||||
channel.update!(chatable: direct_message)
|
||||
|
||||
assert_batches_enqueued(channel, 0)
|
||||
end
|
||||
|
@ -151,7 +151,7 @@ RSpec.describe Jobs::ChatNotifyWatching do
|
||||
end
|
||||
|
||||
context "for a direct message channel" do
|
||||
fab!(:channel) { Fabricate(:direct_message_chat_channel, users: [user1, user2, user3]) }
|
||||
fab!(:channel) { Fabricate(:direct_message_channel, users: [user1, user2, user3]) }
|
||||
fab!(:membership1) do
|
||||
Fabricate(:user_chat_channel_membership, user: user1, chat_channel: channel)
|
||||
end
|
||||
|
@ -4,10 +4,10 @@ describe Chat::ChatChannelFetcher do
|
||||
fab!(:category) { Fabricate(:category, name: "support") }
|
||||
fab!(:private_category) { Fabricate(:private_category, group: Fabricate(:group)) }
|
||||
fab!(:category_channel) { Fabricate(:category_channel, chatable: category) }
|
||||
fab!(:dm_channel1) { Fabricate(:direct_message_channel) }
|
||||
fab!(:dm_channel2) { Fabricate(:direct_message_channel) }
|
||||
fab!(:direct_message_channel1) { Fabricate(:dm_channel, chatable: dm_channel1) }
|
||||
fab!(:direct_message_channel2) { Fabricate(:dm_channel, chatable: dm_channel2) }
|
||||
fab!(:dm_channel1) { Fabricate(:direct_message) }
|
||||
fab!(:dm_channel2) { Fabricate(:direct_message) }
|
||||
fab!(:direct_message_channel1) { Fabricate(:direct_message_channel, chatable: dm_channel1) }
|
||||
fab!(:direct_message_channel2) { Fabricate(:direct_message_channel, chatable: dm_channel2) }
|
||||
fab!(:user1) { Fabricate(:user) }
|
||||
fab!(:user2) { Fabricate(:user) }
|
||||
|
||||
@ -124,7 +124,7 @@ describe Chat::ChatChannelFetcher do
|
||||
end
|
||||
|
||||
it "returns all the channels if the user is a member of the DM channel also" do
|
||||
DirectMessageUser.create!(user: user1, direct_message_channel: dm_channel1)
|
||||
DirectMessageUser.create!(user: user1, direct_message: dm_channel1)
|
||||
expect(subject.all_secured_channel_ids(guardian)).to match_array(
|
||||
[category_channel.id, direct_message_channel1.id],
|
||||
)
|
||||
@ -285,16 +285,16 @@ describe Chat::ChatChannelFetcher do
|
||||
user: user1,
|
||||
following: true,
|
||||
)
|
||||
DirectMessageUser.create!(direct_message_channel: dm_channel1, user: user1)
|
||||
DirectMessageUser.create!(direct_message_channel: dm_channel1, user: user2)
|
||||
DirectMessageUser.create!(direct_message: dm_channel1, user: user1)
|
||||
DirectMessageUser.create!(direct_message: dm_channel1, user: user2)
|
||||
Fabricate(
|
||||
:user_chat_channel_membership_for_dm,
|
||||
chat_channel: direct_message_channel2,
|
||||
user: user1,
|
||||
following: true,
|
||||
)
|
||||
DirectMessageUser.create!(direct_message_channel: dm_channel2, user: user1)
|
||||
DirectMessageUser.create!(direct_message_channel: dm_channel2, user: user2)
|
||||
DirectMessageUser.create!(direct_message: dm_channel2, user: user1)
|
||||
DirectMessageUser.create!(direct_message: dm_channel2, user: user2)
|
||||
|
||||
direct_message_channel1.update!(last_message_sent_at: 1.day.ago)
|
||||
direct_message_channel2.update!(last_message_sent_at: 1.hour.ago)
|
||||
@ -311,7 +311,7 @@ describe Chat::ChatChannelFetcher do
|
||||
user: user1,
|
||||
following: true,
|
||||
)
|
||||
DirectMessageUser.create!(direct_message_channel: dm_channel1, user: user2)
|
||||
DirectMessageUser.create!(direct_message: dm_channel1, user: user2)
|
||||
|
||||
expect(
|
||||
subject.secured_direct_message_channels(user1.id, memberships, guardian).map(&:id),
|
||||
@ -326,8 +326,8 @@ describe Chat::ChatChannelFetcher do
|
||||
user: user1,
|
||||
following: true,
|
||||
)
|
||||
DirectMessageUser.create!(direct_message_channel: dm_channel1, user: user1)
|
||||
DirectMessageUser.create!(direct_message_channel: dm_channel1, user: user2)
|
||||
DirectMessageUser.create!(direct_message: dm_channel1, user: user1)
|
||||
DirectMessageUser.create!(direct_message: dm_channel1, user: user2)
|
||||
|
||||
Fabricate(:chat_message, user: user2, chat_channel: direct_message_channel1)
|
||||
Fabricate(:chat_message, user: user2, chat_channel: direct_message_channel1)
|
||||
|
@ -45,10 +45,10 @@ describe ChatMessageBookmarkable do
|
||||
end
|
||||
|
||||
it "does not return bookmarks for messages inside direct message chat channels the user cannot access" do
|
||||
dm_channel = Fabricate(:direct_message_channel)
|
||||
channel.update(chatable: dm_channel)
|
||||
direct_message = Fabricate(:direct_message)
|
||||
channel.update(chatable: direct_message)
|
||||
expect(subject.perform_list_query(user, guardian)).to eq(nil)
|
||||
DirectMessageUser.create(user: user, direct_message_channel: dm_channel)
|
||||
DirectMessageUser.create(user: user, direct_message: direct_message)
|
||||
bookmark1.reload
|
||||
user.reload
|
||||
guardian = Guardian.new(user)
|
||||
|
@ -369,9 +369,7 @@ describe Chat::ChatReviewQueue do
|
||||
end
|
||||
|
||||
context "when flagging a DM" do
|
||||
fab!(:dm_channel) do
|
||||
Fabricate(:direct_message_chat_channel, users: [message_poster, flagger])
|
||||
end
|
||||
fab!(:dm_channel) { Fabricate(:direct_message_channel, users: [message_poster, flagger]) }
|
||||
|
||||
12.times do |i|
|
||||
fab!("dm_message_#{i + 1}") do
|
||||
|
@ -10,15 +10,8 @@ describe Chat::DirectMessageChannelCreator do
|
||||
before { Group.refresh_automatic_groups! }
|
||||
|
||||
context "with an existing direct message channel" do
|
||||
fab!(:dm_chat_channel) do
|
||||
Fabricate(
|
||||
:chat_channel,
|
||||
chatable: Fabricate(:direct_message_channel, users: [user_1, user_2, user_3]),
|
||||
)
|
||||
end
|
||||
fab!(:own_chat_channel) do
|
||||
Fabricate(:chat_channel, chatable: Fabricate(:direct_message_channel, users: [user_1]))
|
||||
end
|
||||
fab!(:dm_chat_channel) { Fabricate(:direct_message_channel, users: [user_1, user_2, user_3]) }
|
||||
fab!(:own_chat_channel) { Fabricate(:direct_message_channel, users: [user_1]) }
|
||||
|
||||
it "doesn't create a new chat channel" do
|
||||
existing_channel = nil
|
||||
|
@ -7,7 +7,7 @@ RSpec.describe Chat::GuardianExtensions do
|
||||
fab!(:staff) { Fabricate(:user, admin: true) }
|
||||
fab!(:chat_group) { Fabricate(:group) }
|
||||
fab!(:channel) { Fabricate(:category_channel) }
|
||||
fab!(:dm_channel) { Fabricate(:direct_message_chat_channel) }
|
||||
fab!(:dm_channel) { Fabricate(:direct_message_channel) }
|
||||
let(:guardian) { Guardian.new(user) }
|
||||
let(:staff_guardian) { Guardian.new(staff) }
|
||||
|
||||
@ -63,15 +63,15 @@ RSpec.describe Chat::GuardianExtensions do
|
||||
|
||||
describe "#can_see_chat_channel?" do
|
||||
context "for direct message channels" do
|
||||
fab!(:chatable) { Fabricate(:direct_message_channel) }
|
||||
fab!(:channel) { Fabricate(:dm_channel, chatable: chatable) }
|
||||
fab!(:chatable) { Fabricate(:direct_message) }
|
||||
fab!(:channel) { Fabricate(:direct_message_channel, chatable: chatable) }
|
||||
|
||||
it "returns false if the user is not part of the direct message" do
|
||||
expect(guardian.can_see_chat_channel?(channel)).to eq(false)
|
||||
end
|
||||
|
||||
it "returns true if the user is part of the direct message" do
|
||||
DirectMessageUser.create!(user: user, direct_message_channel_id: chatable.id)
|
||||
DirectMessageUser.create!(user: user, direct_message: chatable)
|
||||
expect(guardian.can_see_chat_channel?(channel)).to eq(true)
|
||||
end
|
||||
end
|
||||
@ -98,7 +98,7 @@ RSpec.describe Chat::GuardianExtensions do
|
||||
alias_matcher :be_able_to_flag_in_chat_channel, :be_can_flag_in_chat_channel
|
||||
|
||||
context "when channel is a direct message channel" do
|
||||
let(:channel) { Fabricate(:dm_channel) }
|
||||
let(:channel) { Fabricate(:direct_message_channel) }
|
||||
|
||||
it "returns false" do
|
||||
expect(guardian).not_to be_able_to_flag_in_chat_channel(channel)
|
||||
@ -158,7 +158,7 @@ RSpec.describe Chat::GuardianExtensions do
|
||||
end
|
||||
|
||||
context "for DM channel" do
|
||||
fab!(:dm_channel) { DirectMessageChannel.create! }
|
||||
fab!(:dm_channel) { DirectMessage.create! }
|
||||
|
||||
before { channel.update(chatable_type: "DirectMessageType", chatable: dm_channel) }
|
||||
|
||||
@ -186,7 +186,7 @@ RSpec.describe Chat::GuardianExtensions do
|
||||
end
|
||||
|
||||
context "when chatable is a direct message" do
|
||||
fab!(:chatable) { DirectMessageChannel.create! }
|
||||
fab!(:chatable) { DirectMessage.create! }
|
||||
|
||||
it "allows owner to restore" do
|
||||
expect(guardian.can_restore_chat?(message, chatable)).to eq(true)
|
||||
@ -236,7 +236,7 @@ RSpec.describe Chat::GuardianExtensions do
|
||||
end
|
||||
|
||||
context "when chatable is a direct message" do
|
||||
fab!(:chatable) { DirectMessageChannel.create! }
|
||||
fab!(:chatable) { DirectMessage.create! }
|
||||
|
||||
it "allows staff to restore" do
|
||||
expect(staff_guardian.can_restore_chat?(message, chatable)).to eq(true)
|
||||
@ -269,7 +269,7 @@ RSpec.describe Chat::GuardianExtensions do
|
||||
end
|
||||
|
||||
context "when chatable is a direct message" do
|
||||
fab!(:chatable) { DirectMessageChannel.create! }
|
||||
fab!(:chatable) { DirectMessage.create! }
|
||||
|
||||
it "allows staff to restore" do
|
||||
expect(staff_guardian.can_restore_chat?(message, chatable)).to eq(true)
|
||||
|
@ -53,7 +53,7 @@ describe Chat::MessageMover do
|
||||
expect {
|
||||
described_class.new(
|
||||
acting_user: acting_user,
|
||||
source_channel: Fabricate(:dm_channel),
|
||||
source_channel: Fabricate(:direct_message_channel),
|
||||
message_ids: move_message_ids,
|
||||
).move_to_channel(destination_channel)
|
||||
}.to raise_error(Chat::MessageMover::InvalidChannel)
|
||||
@ -62,7 +62,7 @@ describe Chat::MessageMover do
|
||||
acting_user: acting_user,
|
||||
source_channel: source_channel,
|
||||
message_ids: move_message_ids,
|
||||
).move_to_channel(Fabricate(:dm_channel))
|
||||
).move_to_channel(Fabricate(:direct_message_channel))
|
||||
}.to raise_error(Chat::MessageMover::InvalidChannel)
|
||||
end
|
||||
|
||||
|
@ -48,10 +48,7 @@ describe UserNotifications do
|
||||
user: another_participant,
|
||||
chat_channel: channel,
|
||||
)
|
||||
DirectMessageUser.create!(
|
||||
direct_message_channel: channel.chatable,
|
||||
user: another_participant,
|
||||
)
|
||||
DirectMessageUser.create!(direct_message: channel.chatable, user: another_participant)
|
||||
expected_subject =
|
||||
I18n.t(
|
||||
"user_notifications.chat_summary.subject.direct_message",
|
||||
|
@ -1,66 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
RSpec.describe DMChannel do
|
||||
subject(:channel) { Fabricate.build(:dm_channel) }
|
||||
|
||||
it_behaves_like "a chat channel model"
|
||||
|
||||
it { is_expected.to delegate_method(:allowed_user_ids).to(:direct_message_channel).as(:user_ids) }
|
||||
|
||||
describe "#category_channel?" do
|
||||
it "always returns false" do
|
||||
expect(channel).not_to be_a_category_channel
|
||||
end
|
||||
end
|
||||
|
||||
describe "#public_channel?" do
|
||||
it "always returns false" do
|
||||
expect(channel).not_to be_a_public_channel
|
||||
end
|
||||
end
|
||||
|
||||
describe "#chatable_has_custom_fields?" do
|
||||
it "always returns false" do
|
||||
expect(channel).not_to be_a_chatable_has_custom_fields
|
||||
end
|
||||
end
|
||||
|
||||
describe "#direct_message_channel?" do
|
||||
it "always returns true" do
|
||||
expect(channel).to be_a_direct_message_channel
|
||||
end
|
||||
end
|
||||
|
||||
describe "#read_restricted?" do
|
||||
it "always returns true" do
|
||||
expect(channel).to be_read_restricted
|
||||
end
|
||||
end
|
||||
|
||||
describe "#allowed_group_ids" do
|
||||
it "always returns nothing" do
|
||||
expect(channel.allowed_group_ids).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
describe "#chatable_url" do
|
||||
it "always returns nothing" do
|
||||
expect(channel.chatable_url).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
describe "#title" do
|
||||
subject(:title) { channel.title(user) }
|
||||
|
||||
let(:user) { stub }
|
||||
let(:direct_message_channel) { channel.direct_message_channel }
|
||||
|
||||
it "delegates to direct_message_channel" do
|
||||
direct_message_channel
|
||||
.expects(:chat_channel_title_for_user)
|
||||
.with(channel, user)
|
||||
.returns("something")
|
||||
expect(title).to eq("something")
|
||||
end
|
||||
end
|
||||
end
|
@ -1,73 +1,63 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "rails_helper"
|
||||
RSpec.describe DirectMessageChannel do
|
||||
subject(:channel) { Fabricate.build(:direct_message_channel) }
|
||||
|
||||
describe DirectMessageChannel do
|
||||
fab!(:user1) { Fabricate(:user, username: "chatdmfellow1") }
|
||||
fab!(:user2) { Fabricate(:user, username: "chatdmuser") }
|
||||
fab!(:chat_channel) { Fabricate(:chat_channel) }
|
||||
it_behaves_like "a chat channel model"
|
||||
|
||||
it_behaves_like "a chatable model" do
|
||||
fab!(:chatable) { Fabricate(:direct_message_channel) }
|
||||
let(:channel_class) { DMChannel }
|
||||
it { is_expected.to delegate_method(:allowed_user_ids).to(:direct_message).as(:user_ids) }
|
||||
|
||||
describe "#category_channel?" do
|
||||
it "always returns false" do
|
||||
expect(channel).not_to be_a_category_channel
|
||||
end
|
||||
end
|
||||
|
||||
describe "#chat_channel_title_for_user" do
|
||||
it "returns a nicely formatted name if it's more than one user" do
|
||||
user3 = Fabricate.build(:user, username: "chatdmregent")
|
||||
direct_message_channel = Fabricate(:direct_message_channel, users: [user1, user2, user3])
|
||||
|
||||
expect(direct_message_channel.chat_channel_title_for_user(chat_channel, user1)).to eq(
|
||||
I18n.t(
|
||||
"chat.channel.dm_title.multi_user",
|
||||
users: [user3, user2].map { |u| "@#{u.username}" }.join(", "),
|
||||
),
|
||||
)
|
||||
describe "#public_channel?" do
|
||||
it "always returns false" do
|
||||
expect(channel).not_to be_a_public_channel
|
||||
end
|
||||
end
|
||||
|
||||
it "returns a nicely formatted truncated name if it's more than 5 users" do
|
||||
user3 = Fabricate.build(:user, username: "chatdmregent")
|
||||
|
||||
users = [user1, user2, user3].concat(
|
||||
5.times.map.with_index { |i| Fabricate(:user, username: "chatdmuser#{i}") },
|
||||
)
|
||||
direct_message_channel = Fabricate(:direct_message_channel, users: users)
|
||||
|
||||
expect(direct_message_channel.chat_channel_title_for_user(chat_channel, user1)).to eq(
|
||||
I18n.t(
|
||||
"chat.channel.dm_title.multi_user_truncated",
|
||||
users: users[1..5].sort_by(&:username).map { |u| "@#{u.username}" }.join(", "),
|
||||
leftover: 2,
|
||||
),
|
||||
)
|
||||
describe "#chatable_has_custom_fields?" do
|
||||
it "always returns false" do
|
||||
expect(channel).not_to be_a_chatable_has_custom_fields
|
||||
end
|
||||
end
|
||||
|
||||
it "returns the other user's username if it's a dm to that user" do
|
||||
direct_message_channel = Fabricate(:direct_message_channel, users: [user1, user2])
|
||||
|
||||
expect(direct_message_channel.chat_channel_title_for_user(chat_channel, user1)).to eq(
|
||||
I18n.t("chat.channel.dm_title.single_user", user: "@#{user2.username}"),
|
||||
)
|
||||
describe "#direct_message_channel?" do
|
||||
it "always returns true" do
|
||||
expect(channel).to be_a_direct_message_channel
|
||||
end
|
||||
end
|
||||
|
||||
it "returns the current user's username if it's a dm to self" do
|
||||
direct_message_channel = Fabricate(:direct_message_channel, users: [user1])
|
||||
|
||||
expect(direct_message_channel.chat_channel_title_for_user(chat_channel, user1)).to eq(
|
||||
I18n.t("chat.channel.dm_title.single_user", user: "@#{user1.username}"),
|
||||
)
|
||||
describe "#read_restricted?" do
|
||||
it "always returns true" do
|
||||
expect(channel).to be_read_restricted
|
||||
end
|
||||
end
|
||||
|
||||
context "when user is deleted" do
|
||||
it "returns a placeholder username" do
|
||||
direct_message_channel = Fabricate(:direct_message_channel, users: [user1, user2])
|
||||
user2.destroy!
|
||||
direct_message_channel.reload
|
||||
describe "#allowed_group_ids" do
|
||||
it "always returns nothing" do
|
||||
expect(channel.allowed_group_ids).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
expect(direct_message_channel.chat_channel_title_for_user(chat_channel, user1)).to eq(
|
||||
"@#{I18n.t("chat.deleted_chat_username")}",
|
||||
)
|
||||
end
|
||||
describe "#chatable_url" do
|
||||
it "always returns nothing" do
|
||||
expect(channel.chatable_url).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
describe "#title" do
|
||||
subject(:title) { channel.title(user) }
|
||||
|
||||
let(:user) { stub }
|
||||
let(:direct_message) { channel.direct_message }
|
||||
|
||||
it "delegates to direct_message" do
|
||||
direct_message.expects(:chat_channel_title_for_user).with(channel, user).returns("something")
|
||||
expect(title).to eq("something")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
73
plugins/chat/spec/models/direct_message_spec.rb
Normal file
73
plugins/chat/spec/models/direct_message_spec.rb
Normal file
@ -0,0 +1,73 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "rails_helper"
|
||||
|
||||
describe DirectMessage do
|
||||
fab!(:user1) { Fabricate(:user, username: "chatdmfellow1") }
|
||||
fab!(:user2) { Fabricate(:user, username: "chatdmuser") }
|
||||
fab!(:chat_channel) { Fabricate(:direct_message_channel) }
|
||||
|
||||
it_behaves_like "a chatable model" do
|
||||
fab!(:chatable) { Fabricate(:direct_message) }
|
||||
let(:channel_class) { DirectMessageChannel }
|
||||
end
|
||||
|
||||
describe "#chat_channel_title_for_user" do
|
||||
it "returns a nicely formatted name if it's more than one user" do
|
||||
user3 = Fabricate.build(:user, username: "chatdmregent")
|
||||
direct_message = Fabricate(:direct_message, users: [user1, user2, user3])
|
||||
|
||||
expect(direct_message.chat_channel_title_for_user(chat_channel, user1)).to eq(
|
||||
I18n.t(
|
||||
"chat.channel.dm_title.multi_user",
|
||||
users: [user3, user2].map { |u| "@#{u.username}" }.join(", "),
|
||||
),
|
||||
)
|
||||
end
|
||||
|
||||
it "returns a nicely formatted truncated name if it's more than 5 users" do
|
||||
user3 = Fabricate.build(:user, username: "chatdmregent")
|
||||
|
||||
users = [user1, user2, user3].concat(
|
||||
5.times.map.with_index { |i| Fabricate(:user, username: "chatdmuser#{i}") },
|
||||
)
|
||||
direct_message = Fabricate(:direct_message, users: users)
|
||||
|
||||
expect(direct_message.chat_channel_title_for_user(chat_channel, user1)).to eq(
|
||||
I18n.t(
|
||||
"chat.channel.dm_title.multi_user_truncated",
|
||||
users: users[1..5].sort_by(&:username).map { |u| "@#{u.username}" }.join(", "),
|
||||
leftover: 2,
|
||||
),
|
||||
)
|
||||
end
|
||||
|
||||
it "returns the other user's username if it's a dm to that user" do
|
||||
direct_message = Fabricate(:direct_message, users: [user1, user2])
|
||||
|
||||
expect(direct_message.chat_channel_title_for_user(chat_channel, user1)).to eq(
|
||||
I18n.t("chat.channel.dm_title.single_user", user: "@#{user2.username}"),
|
||||
)
|
||||
end
|
||||
|
||||
it "returns the current user's username if it's a dm to self" do
|
||||
direct_message = Fabricate(:direct_message, users: [user1])
|
||||
|
||||
expect(direct_message.chat_channel_title_for_user(chat_channel, user1)).to eq(
|
||||
I18n.t("chat.channel.dm_title.single_user", user: "@#{user1.username}"),
|
||||
)
|
||||
end
|
||||
|
||||
context "when user is deleted" do
|
||||
it "returns a placeholder username" do
|
||||
direct_message = Fabricate(:direct_message, users: [user1, user2])
|
||||
user2.destroy!
|
||||
direct_message.reload
|
||||
|
||||
expect(direct_message.chat_channel_title_for_user(chat_channel, user1)).to eq(
|
||||
"@#{I18n.t("chat.deleted_chat_username")}",
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -347,19 +347,11 @@ describe Chat do
|
||||
|
||||
context "when followed public channels exist" do
|
||||
fab!(:user_2) { Fabricate(:user) }
|
||||
fab!(:channel) do
|
||||
Fabricate(
|
||||
:chat_channel,
|
||||
chatable: Fabricate(:direct_message_channel, users: [user, user_2]),
|
||||
)
|
||||
end
|
||||
fab!(:channel) { Fabricate(:direct_message_channel, users: [user, user_2]) }
|
||||
|
||||
before do
|
||||
Fabricate(:user_chat_channel_membership, user: user, chat_channel: channel, following: true)
|
||||
Fabricate(
|
||||
:chat_channel,
|
||||
chatable: Fabricate(:direct_message_channel, users: [user, user_2]),
|
||||
)
|
||||
Fabricate(:direct_message_channel, users: [user, user_2])
|
||||
end
|
||||
|
||||
it "returns them" do
|
||||
|
@ -108,8 +108,7 @@ describe ChatChannelMembershipsQuery do
|
||||
end
|
||||
|
||||
context "when chatable is direct channel" do
|
||||
fab!(:chatable_1) { Fabricate(:direct_message_channel, users: [user_1, user_2]) }
|
||||
fab!(:channel_1) { Fabricate(:dm_channel, chatable: chatable_1) }
|
||||
fab!(:channel_1) { Fabricate(:direct_message_channel, users: [user_1, user_2]) }
|
||||
|
||||
context "when no memberships exists" do
|
||||
it "returns an empty array" do
|
||||
|
@ -79,8 +79,7 @@ RSpec.describe Chat::Api::ChatChannelNotificationsSettingsController do
|
||||
|
||||
context "when direct message channel has invalid params" do
|
||||
fab!(:user) { Fabricate(:user) }
|
||||
fab!(:chatable) { Fabricate(:direct_message_channel, users: [user, Fabricate(:user)]) }
|
||||
fab!(:chat_channel) { Fabricate(:dm_channel, chatable: chatable) }
|
||||
fab!(:chat_channel) { Fabricate(:direct_message_channel, users: [user, Fabricate(:user)]) }
|
||||
fab!(:membership) do
|
||||
Fabricate(:user_chat_channel_membership, user: user, chat_channel: chat_channel)
|
||||
end
|
||||
@ -102,8 +101,7 @@ RSpec.describe Chat::Api::ChatChannelNotificationsSettingsController do
|
||||
|
||||
context "when direct message channel has valid params" do
|
||||
fab!(:user) { Fabricate(:user) }
|
||||
fab!(:chatable) { Fabricate(:direct_message_channel, users: [user, Fabricate(:user)]) }
|
||||
fab!(:chat_channel) { Fabricate(:dm_channel, chatable: chatable) }
|
||||
fab!(:chat_channel) { Fabricate(:direct_message_channel, users: [user, Fabricate(:user)]) }
|
||||
fab!(:membership) do
|
||||
Fabricate(
|
||||
:user_chat_channel_membership,
|
||||
|
@ -234,8 +234,7 @@ describe Chat::Api::ChatChannelsController do
|
||||
|
||||
context "when channel is a direct message channel" do
|
||||
fab!(:user) { Fabricate(:admin) }
|
||||
fab!(:chatable) { Fabricate(:direct_message_channel) }
|
||||
fab!(:chat_channel) { Fabricate(:dm_channel, chatable: chatable) }
|
||||
fab!(:chat_channel) { Fabricate(:direct_message_channel) }
|
||||
|
||||
before { sign_in(user) }
|
||||
|
||||
|
@ -8,9 +8,7 @@ RSpec.describe Chat::ChatChannelsController do
|
||||
fab!(:admin) { Fabricate(:admin, username: "andyjones", name: "Andy Jones") }
|
||||
fab!(:category) { Fabricate(:category) }
|
||||
fab!(:chat_channel) { Fabricate(:category_channel, chatable: category) }
|
||||
fab!(:dm_chat_channel) do
|
||||
Fabricate(:dm_channel, chatable: Fabricate(:direct_message_channel, users: [user, admin]))
|
||||
end
|
||||
fab!(:dm_chat_channel) { Fabricate(:direct_message_channel, users: [user, admin]) }
|
||||
|
||||
before do
|
||||
SiteSetting.chat_enabled = true
|
||||
@ -514,11 +512,7 @@ RSpec.describe Chat::ChatChannelsController do
|
||||
group = Fabricate(:group, name: "chatpeeps")
|
||||
SiteSetting.chat_allowed_groups = group.id
|
||||
GroupUser.create(user: user, group: group)
|
||||
dm_chat_channel_2 =
|
||||
Fabricate(
|
||||
:dm_channel,
|
||||
chatable: Fabricate(:direct_message_channel, users: [user, other_user]),
|
||||
)
|
||||
dm_chat_channel_2 = Fabricate(:direct_message_channel, users: [user, other_user])
|
||||
|
||||
get "/chat/chat_channels/search.json", params: { filter: "janemay" }
|
||||
expect(response.status).to eq(200)
|
||||
|
@ -8,12 +8,7 @@ RSpec.describe Chat::ChatController do
|
||||
fab!(:admin) { Fabricate(:admin) }
|
||||
fab!(:category) { Fabricate(:category) }
|
||||
fab!(:chat_channel) { Fabricate(:category_channel, chatable: category) }
|
||||
fab!(:dm_chat_channel) do
|
||||
Fabricate(
|
||||
:dm_channel,
|
||||
chatable: Fabricate(:direct_message_channel, users: [user, other_user, admin]),
|
||||
)
|
||||
end
|
||||
fab!(:dm_chat_channel) { Fabricate(:direct_message_channel, users: [user, other_user, admin]) }
|
||||
fab!(:tag) { Fabricate(:tag) }
|
||||
|
||||
MESSAGE_COUNT = 70
|
||||
@ -355,8 +350,8 @@ RSpec.describe Chat::ChatController do
|
||||
describe "for direct message" do
|
||||
fab!(:user1) { Fabricate(:user) }
|
||||
fab!(:user2) { Fabricate(:user) }
|
||||
fab!(:chatable) { Fabricate(:direct_message_channel, users: [user1, user2]) }
|
||||
fab!(:direct_message_channel) { Fabricate(:dm_channel, chatable: chatable) }
|
||||
fab!(:chatable) { Fabricate(:direct_message, users: [user1, user2]) }
|
||||
fab!(:direct_message_channel) { Fabricate(:direct_message_channel, chatable: chatable) }
|
||||
|
||||
def create_memberships
|
||||
UserChatChannelMembership.create!(
|
||||
@ -392,7 +387,7 @@ RSpec.describe Chat::ChatController do
|
||||
it "errors when the user is not part of the direct message channel" do
|
||||
create_memberships
|
||||
|
||||
DirectMessageUser.find_by(user: user1, direct_message_channel: chatable).destroy!
|
||||
DirectMessageUser.find_by(user: user1, direct_message: chatable).destroy!
|
||||
sign_in(user1)
|
||||
post "/chat/#{direct_message_channel.id}.json", params: { message: message }
|
||||
expect(response.status).to eq(403)
|
||||
@ -1085,10 +1080,7 @@ RSpec.describe Chat::ChatController do
|
||||
it "sets `dismissed_dm_retention_reminder` to true" do
|
||||
sign_in(user)
|
||||
expect {
|
||||
post "/chat/dismiss-retention-reminder.json",
|
||||
params: {
|
||||
chatable_type: "DirectMessageChannel",
|
||||
}
|
||||
post "/chat/dismiss-retention-reminder.json", params: { chatable_type: "DirectMessage" }
|
||||
}.to change { user.user_option.reload.dismissed_dm_retention_reminder }.to (true)
|
||||
end
|
||||
|
||||
@ -1101,10 +1093,7 @@ RSpec.describe Chat::ChatController do
|
||||
post "/chat/dismiss-retention-reminder.json", params: { chatable_type: "Category" }
|
||||
expect(response.status).to eq(200)
|
||||
|
||||
post "/chat/dismiss-retention-reminder.json",
|
||||
params: {
|
||||
chatable_type: "DirectMessageChannel",
|
||||
}
|
||||
post "/chat/dismiss-retention-reminder.json", params: { chatable_type: "DirectMessage" }
|
||||
expect(response.status).to eq(200)
|
||||
end
|
||||
end
|
||||
@ -1266,7 +1255,7 @@ RSpec.describe Chat::ChatController do
|
||||
|
||||
describe "#set_draft" do
|
||||
fab!(:chat_channel) { Fabricate(:category_channel) }
|
||||
let(:dm_channel) { Fabricate(:dm_channel) }
|
||||
let(:dm_channel) { Fabricate(:direct_message_channel) }
|
||||
|
||||
before { sign_in(user) }
|
||||
|
||||
@ -1298,7 +1287,7 @@ RSpec.describe Chat::ChatController do
|
||||
post "/chat/drafts.json", params: { chat_channel_id: dm_channel.id, data: "{}" }
|
||||
expect(response.status).to eq(403)
|
||||
|
||||
DirectMessageUser.create(user: user, direct_message_channel: dm_channel.chatable)
|
||||
DirectMessageUser.create(user: user, direct_message: dm_channel.chatable)
|
||||
expect {
|
||||
post "/chat/drafts.json", params: { chat_channel_id: dm_channel.id, data: "{}" }
|
||||
}.to change { ChatDraft.count }.by(1)
|
||||
@ -1319,7 +1308,7 @@ RSpec.describe Chat::ChatController do
|
||||
|
||||
describe "#lookup_message" do
|
||||
let!(:message) { Fabricate(:chat_message, chat_channel: channel) }
|
||||
let(:channel) { Fabricate(:dm_channel) }
|
||||
let(:channel) { Fabricate(:direct_message_channel) }
|
||||
let(:chatable) { channel.chatable }
|
||||
fab!(:user) { Fabricate(:user) }
|
||||
|
||||
@ -1362,13 +1351,13 @@ RSpec.describe Chat::ChatController do
|
||||
end
|
||||
|
||||
context "when the chat channel is for a direct message channel" do
|
||||
let(:channel) { Fabricate(:dm_channel) }
|
||||
let(:channel) { Fabricate(:direct_message_channel) }
|
||||
|
||||
it "ensures the user can access that direct message channel" do
|
||||
get "/chat/lookup/#{message.id}.json", { params: { chat_channel_id: channel.id } }
|
||||
expect(response.status).to eq(403)
|
||||
|
||||
DirectMessageUser.create!(user: user, direct_message_channel: chatable)
|
||||
DirectMessageUser.create!(user: user, direct_message: chatable)
|
||||
get "/chat/lookup/#{message.id}.json", { params: { chat_channel_id: channel.id } }
|
||||
expect(response.status).to eq(200)
|
||||
expect(response.parsed_body["chat_messages"][0]["id"]).to eq(message.id)
|
||||
@ -1396,10 +1385,7 @@ RSpec.describe Chat::ChatController do
|
||||
fab!(:destination_channel) { Fabricate(:category_channel) }
|
||||
let(:message_ids) { [message_to_move1.id, message_to_move2.id] }
|
||||
let(:invalid_destination_channel) do
|
||||
Fabricate(
|
||||
:dm_channel,
|
||||
chatable: Fabricate(:direct_message_channel, users: [admin, Fabricate(:user)]),
|
||||
)
|
||||
Fabricate(:direct_message_channel, users: [admin, Fabricate(:user)])
|
||||
end
|
||||
|
||||
context "when the user is not admin" do
|
||||
|
@ -15,11 +15,11 @@ RSpec.describe Chat::DirectMessagesController do
|
||||
end
|
||||
|
||||
def create_dm_channel(user_ids)
|
||||
direct_messages_channel = DirectMessageChannel.create!
|
||||
direct_messages_channel = DirectMessage.create!
|
||||
user_ids.each do |user_id|
|
||||
direct_messages_channel.direct_message_users.create!(user_id: user_id)
|
||||
end
|
||||
DMChannel.create!(chatable: direct_messages_channel)
|
||||
DirectMessageChannel.create!(chatable: direct_messages_channel)
|
||||
end
|
||||
|
||||
describe "#index" do
|
||||
@ -41,10 +41,10 @@ RSpec.describe Chat::DirectMessagesController do
|
||||
|
||||
context "when channel exists" do
|
||||
let!(:channel) do
|
||||
direct_messages_channel = DirectMessageChannel.create!
|
||||
direct_messages_channel = DirectMessage.create!
|
||||
direct_messages_channel.direct_message_users.create!(user_id: user.id)
|
||||
direct_messages_channel.direct_message_users.create!(user_id: user1.id)
|
||||
DMChannel.create!(chatable: direct_messages_channel)
|
||||
DirectMessageChannel.create!(chatable: direct_messages_channel)
|
||||
end
|
||||
|
||||
it "returns the channel" do
|
||||
@ -76,8 +76,8 @@ RSpec.describe Chat::DirectMessagesController do
|
||||
it "creates a new dm channel with username(s) provided" do
|
||||
expect {
|
||||
post "/chat/direct_messages/create.json", params: { usernames: [usernames] }
|
||||
}.to change { DirectMessageChannel.count }.by(1)
|
||||
expect(DirectMessageChannel.last.direct_message_users.map(&:user_id)).to match_array(
|
||||
}.to change { DirectMessage.count }.by(1)
|
||||
expect(DirectMessage.last.direct_message_users.map(&:user_id)).to match_array(
|
||||
direct_message_user_ids,
|
||||
)
|
||||
end
|
||||
@ -86,7 +86,7 @@ RSpec.describe Chat::DirectMessagesController do
|
||||
create_dm_channel(direct_message_user_ids)
|
||||
expect {
|
||||
post "/chat/direct_messages/create.json", params: { usernames: [usernames] }
|
||||
}.not_to change { DirectMessageChannel.count }
|
||||
}.not_to change { DirectMessage.count }
|
||||
end
|
||||
end
|
||||
|
||||
@ -127,7 +127,7 @@ RSpec.describe Chat::DirectMessagesController do
|
||||
it "responds with a friendly error" do
|
||||
expect {
|
||||
post "/chat/direct_messages/create.json", params: { usernames: [usernames] }
|
||||
}.not_to change { DirectMessageChannel.count }
|
||||
}.not_to change { DirectMessage.count }
|
||||
expect(response.status).to eq(422)
|
||||
expect(response.parsed_body["errors"]).to eq(
|
||||
[I18n.t("chat.errors.not_accepting_dms", username: user1.username)],
|
||||
|
@ -175,7 +175,7 @@ describe ChatMessageSerializer do
|
||||
|
||||
context "when flagging DMs" do
|
||||
fab!(:dm_channel) do
|
||||
Fabricate(:direct_message_chat_channel, users: [guardian_user, message_poster])
|
||||
Fabricate(:direct_message_channel, users: [guardian_user, message_poster])
|
||||
end
|
||||
fab!(:dm_message) { Fabricate(:chat_message, user: message_poster, chat_channel: dm_channel) }
|
||||
|
||||
|
@ -1,71 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "rails_helper"
|
||||
|
||||
describe DirectMessageChannelSerializer do
|
||||
describe "#user" do
|
||||
it "returns you when there are two of us" do
|
||||
me = Fabricate.build(:user)
|
||||
you = Fabricate.build(:user)
|
||||
direct_message_channel = Fabricate.build(:direct_message_channel, users: [me, you])
|
||||
|
||||
serializer =
|
||||
DirectMessageChannelSerializer.new(
|
||||
direct_message_channel,
|
||||
scope: Guardian.new(me),
|
||||
root: false,
|
||||
)
|
||||
|
||||
expect(serializer.users).to eq([you])
|
||||
end
|
||||
|
||||
it "returns you both if there are three of us" do
|
||||
me = Fabricate.build(:user)
|
||||
you = Fabricate.build(:user)
|
||||
other_you = Fabricate.build(:user)
|
||||
direct_message_channel = Fabricate.build(:direct_message_channel, users: [me, you, other_you])
|
||||
|
||||
serializer =
|
||||
DirectMessageChannelSerializer.new(
|
||||
direct_message_channel,
|
||||
scope: Guardian.new(me),
|
||||
root: false,
|
||||
)
|
||||
|
||||
expect(serializer.users).to match_array([you, other_you])
|
||||
end
|
||||
|
||||
it "returns me if there is only me" do
|
||||
me = Fabricate.build(:user)
|
||||
direct_message_channel = Fabricate.build(:direct_message_channel, users: [me])
|
||||
|
||||
serializer =
|
||||
DirectMessageChannelSerializer.new(
|
||||
direct_message_channel,
|
||||
scope: Guardian.new(me),
|
||||
root: false,
|
||||
)
|
||||
|
||||
expect(serializer.users).to eq([me])
|
||||
end
|
||||
|
||||
context "when a user is destroyed" do
|
||||
it "returns a placeholder user" do
|
||||
me = Fabricate(:user)
|
||||
you = Fabricate(:user)
|
||||
direct_message_channel = Fabricate(:direct_message_channel, users: [me, you])
|
||||
|
||||
you.destroy!
|
||||
|
||||
serializer =
|
||||
DirectMessageChannelSerializer.new(
|
||||
direct_message_channel.reload,
|
||||
scope: Guardian.new(me),
|
||||
root: false,
|
||||
).as_json
|
||||
|
||||
expect(serializer[:users][0][:username]).to eq(I18n.t("chat.deleted_chat_username"))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,52 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "rails_helper"
|
||||
|
||||
describe DirectMessageSerializer do
|
||||
describe "#user" do
|
||||
it "returns you when there are two of us" do
|
||||
me = Fabricate.build(:user)
|
||||
you = Fabricate.build(:user)
|
||||
direct_message = Fabricate.build(:direct_message, users: [me, you])
|
||||
|
||||
serializer = described_class.new(direct_message, scope: Guardian.new(me), root: false)
|
||||
|
||||
expect(serializer.users).to eq([you])
|
||||
end
|
||||
|
||||
it "returns you both if there are three of us" do
|
||||
me = Fabricate.build(:user)
|
||||
you = Fabricate.build(:user)
|
||||
other_you = Fabricate.build(:user)
|
||||
direct_message = Fabricate.build(:direct_message, users: [me, you, other_you])
|
||||
|
||||
serializer = described_class.new(direct_message, scope: Guardian.new(me), root: false)
|
||||
|
||||
expect(serializer.users).to match_array([you, other_you])
|
||||
end
|
||||
|
||||
it "returns me if there is only me" do
|
||||
me = Fabricate.build(:user)
|
||||
direct_message = Fabricate.build(:direct_message, users: [me])
|
||||
|
||||
serializer = described_class.new(direct_message, scope: Guardian.new(me), root: false)
|
||||
|
||||
expect(serializer.users).to eq([me])
|
||||
end
|
||||
|
||||
context "when a user is destroyed" do
|
||||
it "returns a placeholder user" do
|
||||
me = Fabricate(:user)
|
||||
you = Fabricate(:user)
|
||||
direct_message = Fabricate(:direct_message, users: [me, you])
|
||||
|
||||
you.destroy!
|
||||
|
||||
serializer =
|
||||
described_class.new(direct_message.reload, scope: Guardian.new(me), root: false).as_json
|
||||
|
||||
expect(serializer[:users][0][:username]).to eq(I18n.t("chat.deleted_chat_username"))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -5,14 +5,10 @@ RSpec.describe StructuredChannelSerializer do
|
||||
fab!(:guardian) { Guardian.new(user1) }
|
||||
fab!(:user2) { Fabricate(:user) }
|
||||
fab!(:user3) { Fabricate(:user) }
|
||||
fab!(:channel1) { Fabricate(:chat_channel) }
|
||||
fab!(:channel2) { Fabricate(:chat_channel) }
|
||||
fab!(:channel3) do
|
||||
Fabricate(:chat_channel, chatable: Fabricate(:direct_message_channel, users: [user1, user2]))
|
||||
end
|
||||
fab!(:channel4) do
|
||||
Fabricate(:chat_channel, chatable: Fabricate(:direct_message_channel, users: [user1, user3]))
|
||||
end
|
||||
fab!(:channel1) { Fabricate(:category_channel) }
|
||||
fab!(:channel2) { Fabricate(:category_channel) }
|
||||
fab!(:channel3) { Fabricate(:direct_message_channel, users: [user1, user2]) }
|
||||
fab!(:channel4) { Fabricate(:direct_message_channel, users: [user1, user3]) }
|
||||
fab!(:membership1) do
|
||||
Fabricate(:user_chat_channel_membership, user: user1, chat_channel: channel1)
|
||||
end
|
||||
|
@ -7,12 +7,10 @@ RSpec.shared_examples "a chat channel model" do
|
||||
fab!(:group) { Fabricate(:group) }
|
||||
fab!(:private_category) { Fabricate(:private_category, group: group) }
|
||||
fab!(:private_category_channel) { Fabricate(:category_channel, chatable: private_category) }
|
||||
fab!(:direct_message_channel) do
|
||||
Fabricate(:dm_channel, chatable: Fabricate(:direct_message_channel, users: [user1, user2]))
|
||||
end
|
||||
fab!(:direct_message_channel) { Fabricate(:direct_message_channel, users: [user1, user2]) }
|
||||
|
||||
it { is_expected.to belong_to(:chatable) }
|
||||
it { is_expected.to belong_to(:direct_message_channel).with_foreign_key(:chatable_id) }
|
||||
it { is_expected.to belong_to(:direct_message).with_foreign_key(:chatable_id) }
|
||||
it { is_expected.to have_many(:chat_messages) }
|
||||
it { is_expected.to have_many(:user_chat_channel_memberships) }
|
||||
it { is_expected.to have_one(:chat_channel_archive) }
|
||||
|
@ -32,7 +32,7 @@ acceptance("Discourse Chat - Sidebar - User Status", function (needs) {
|
||||
},
|
||||
],
|
||||
},
|
||||
chatable_type: "DirectMessageChannel",
|
||||
chatable_type: "DirectMessage",
|
||||
title: "@user1",
|
||||
};
|
||||
|
||||
|
@ -95,7 +95,7 @@ acceptance("Discourse Chat - without unread", function (needs) {
|
||||
chat_channels: [],
|
||||
chatable: { users: [hawkAsJson] },
|
||||
chatable_id: 16,
|
||||
chatable_type: "DirectMessageChannel",
|
||||
chatable_type: "DirectMessage",
|
||||
chatable_url: null,
|
||||
id: 75,
|
||||
title: "@hawk",
|
||||
@ -116,7 +116,7 @@ acceptance("Discourse Chat - without unread", function (needs) {
|
||||
chat_channel: {
|
||||
id: 75,
|
||||
title: "hawk",
|
||||
chatable_type: "DirectMessageChannel",
|
||||
chatable_type: "DirectMessage",
|
||||
last_message_sent_at: "2021-07-20T08:14:16.950Z",
|
||||
chatable: {
|
||||
users: [{ username: "hawk" }],
|
||||
|
@ -51,7 +51,7 @@ acceptance("Discourse Chat - Core Sidebar", function (needs) {
|
||||
],
|
||||
},
|
||||
chatable_id: 59,
|
||||
chatable_type: "DirectMessageChannel",
|
||||
chatable_type: "DirectMessage",
|
||||
chatable_url: null,
|
||||
id: 76,
|
||||
title: "@sam",
|
||||
@ -79,7 +79,7 @@ acceptance("Discourse Chat - Core Sidebar", function (needs) {
|
||||
},
|
||||
],
|
||||
},
|
||||
chatable_type: "DirectMessageChannel",
|
||||
chatable_type: "DirectMessage",
|
||||
chatable_url: null,
|
||||
id: 77,
|
||||
title: "@<script>sam</script>",
|
||||
@ -177,7 +177,7 @@ acceptance("Discourse Chat - Core Sidebar", function (needs) {
|
||||
chat_channel: {
|
||||
id: 75,
|
||||
title: "hawk",
|
||||
chatable_type: "DirectMessageChannel",
|
||||
chatable_type: "DirectMessage",
|
||||
last_message_sent_at: "2021-07-20T08:14:16.950Z",
|
||||
chatable: {
|
||||
users: [{ username: "hawk" }],
|
||||
|
@ -51,7 +51,7 @@ acceptance("Discourse Chat - User card test", function (needs) {
|
||||
],
|
||||
},
|
||||
chatable_id: 16,
|
||||
chatable_type: "DirectMessageChannel",
|
||||
chatable_type: "DirectMessage",
|
||||
chatable_url: null,
|
||||
id: 75,
|
||||
title: "@hawk",
|
||||
|
@ -22,7 +22,7 @@ export const directMessageChannels = [
|
||||
],
|
||||
},
|
||||
chatable_id: 58,
|
||||
chatable_type: "DirectMessageChannel",
|
||||
chatable_type: "DirectMessage",
|
||||
chatable_url: null,
|
||||
id: 75,
|
||||
title: "@hawk",
|
||||
@ -53,7 +53,7 @@ export const directMessageChannels = [
|
||||
],
|
||||
},
|
||||
chatable_id: 59,
|
||||
chatable_type: "DirectMessageChannel",
|
||||
chatable_type: "DirectMessage",
|
||||
chatable_url: null,
|
||||
id: 76,
|
||||
title: "@eviltrout, @markvanlan",
|
||||
|
@ -19,7 +19,7 @@ module("Discourse Chat | Component | chat-channel-leave-btn", function (hooks) {
|
||||
this.set("onLeaveChannel", () => this.set("foo", 2));
|
||||
this.set("channel", {
|
||||
id: 1,
|
||||
chatable_type: "DirectMessageChannel",
|
||||
chatable_type: "DirectMessage",
|
||||
chatable: {
|
||||
users: [{ id: 1 }],
|
||||
},
|
||||
@ -42,7 +42,7 @@ module("Discourse Chat | Component | chat-channel-leave-btn", function (hooks) {
|
||||
template: hbs`{{chat-channel-leave-btn channel=channel}}`,
|
||||
|
||||
beforeEach() {
|
||||
this.set("channel", { chatable_type: "DirectMessageChannel" });
|
||||
this.set("channel", { chatable_type: "DirectMessage" });
|
||||
},
|
||||
|
||||
async test(assert) {
|
||||
|
@ -20,7 +20,7 @@ module(
|
||||
this.set(
|
||||
"chatChannel",
|
||||
ChatChannel.create({
|
||||
chatable_type: "DirectMessageChannel",
|
||||
chatable_type: "DirectMessage",
|
||||
chatable: {
|
||||
users: [{ id: 1 }],
|
||||
},
|
||||
@ -43,7 +43,7 @@ module(
|
||||
this.set(
|
||||
"chatChannel",
|
||||
ChatChannel.create({
|
||||
chatable_type: "DirectMessageChannel",
|
||||
chatable_type: "DirectMessage",
|
||||
chatable: {
|
||||
users: [
|
||||
{ name: "Tomtom" },
|
||||
|
@ -59,7 +59,7 @@ module(
|
||||
async beforeEach() {
|
||||
this.set(
|
||||
"chatChannel",
|
||||
ChatChannel.create({ chatable_type: "DirectMessageChannel" })
|
||||
ChatChannel.create({ chatable_type: "DirectMessage" })
|
||||
);
|
||||
set(this.currentUser, "needs_dm_retention_reminder", true);
|
||||
this.siteSettings.chat_dm_retention_days = 100;
|
||||
@ -79,7 +79,7 @@ module(
|
||||
async beforeEach() {
|
||||
this.set(
|
||||
"chatChannel",
|
||||
ChatChannel.create({ chatable_type: "DirectMessageChannel" })
|
||||
ChatChannel.create({ chatable_type: "DirectMessage" })
|
||||
);
|
||||
set(this.currentUser, "needs_dm_retention_reminder", false);
|
||||
this.siteSettings.chat_dm_retention_days = 100;
|
||||
|
Loading…
x
Reference in New Issue
Block a user