diff --git a/plugins/chat/app/controllers/chat_channels_controller.rb b/plugins/chat/app/controllers/chat_channels_controller.rb index 700ad43d5c9..cecc5b2f1fd 100644 --- a/plugins/chat/app/controllers/chat_channels_controller.rb +++ b/plugins/chat/app/controllers/chat_channels_controller.rb @@ -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)", diff --git a/plugins/chat/app/controllers/direct_messages_controller.rb b/plugins/chat/app/controllers/direct_messages_controller.rb index 920c440ce00..8464b705e04 100644 --- a/plugins/chat/app/controllers/direct_messages_controller.rb +++ b/plugins/chat/app/controllers/direct_messages_controller.rb @@ -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, diff --git a/plugins/chat/app/models/chat_channel.rb b/plugins/chat/app/models/chat_channel.rb index 9afcfea8fe7..f04094939ae 100644 --- a/plugins/chat/app/models/chat_channel.rb +++ b/plugins/chat/app/models/chat_channel.rb @@ -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 diff --git a/plugins/chat/app/models/chat_message.rb b/plugins/chat/app/models/chat_message.rb index e327170b92a..b0784d4ccb6 100644 --- a/plugins/chat/app/models/chat_message.rb +++ b/plugins/chat/app/models/chat_message.rb @@ -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) } diff --git a/plugins/chat/app/models/concerns/chatable.rb b/plugins/chat/app/models/concerns/chatable.rb index b70fe3b0c5a..2128a7cf4e4 100644 --- a/plugins/chat/app/models/concerns/chatable.rb +++ b/plugins/chat/app/models/concerns/chatable.rb @@ -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 diff --git a/plugins/chat/app/models/d_m_channel.rb b/plugins/chat/app/models/d_m_channel.rb deleted file mode 100644 index a00503200c3..00000000000 --- a/plugins/chat/app/models/d_m_channel.rb +++ /dev/null @@ -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 diff --git a/plugins/chat/app/models/direct_message.rb b/plugins/chat/app/models/direct_message.rb new file mode 100644 index 00000000000..40ad99c4723 --- /dev/null +++ b/plugins/chat/app/models/direct_message.rb @@ -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 +# diff --git a/plugins/chat/app/models/direct_message_channel.rb b/plugins/chat/app/models/direct_message_channel.rb index c71de383d11..69be58827a6 100644 --- a/plugins/chat/app/models/direct_message_channel.rb +++ b/plugins/chat/app/models/direct_message_channel.rb @@ -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 -# diff --git a/plugins/chat/app/models/direct_message_user.rb b/plugins/chat/app/models/direct_message_user.rb index 3610479acc8..f8cfc6664ff 100644 --- a/plugins/chat/app/models/direct_message_user.rb +++ b/plugins/chat/app/models/direct_message_user.rb @@ -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 diff --git a/plugins/chat/app/serializers/chat_channel_serializer.rb b/plugins/chat/app/serializers/chat_channel_serializer.rb index 8ef5a0831cb..8bb24577697 100644 --- a/plugins/chat/app/serializers/chat_channel_serializer.rb +++ b/plugins/chat/app/serializers/chat_channel_serializer.rb @@ -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 diff --git a/plugins/chat/app/serializers/direct_message_channel_serializer.rb b/plugins/chat/app/serializers/direct_message_serializer.rb similarity index 82% rename from plugins/chat/app/serializers/direct_message_channel_serializer.rb rename to plugins/chat/app/serializers/direct_message_serializer.rb index 33a044b7ff6..817902467dd 100644 --- a/plugins/chat/app/serializers/direct_message_channel_serializer.rb +++ b/plugins/chat/app/serializers/direct_message_serializer.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class DirectMessageChannelSerializer < ApplicationSerializer +class DirectMessageSerializer < ApplicationSerializer has_many :users, serializer: UserWithCustomFieldsAndStatusSerializer, embed: :objects def users diff --git a/plugins/chat/assets/javascripts/discourse/models/chat-channel.js b/plugins/chat/assets/javascripts/discourse/models/chat-channel.js index 0bc2b796523..7dca63e974b 100644 --- a/plugins/chat/assets/javascripts/discourse/models/chat-channel.js +++ b/plugins/chat/assets/javascripts/discourse/models/chat-channel.js @@ -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 = { diff --git a/plugins/chat/db/post_migrate/20221027090832_migrate_dm_channels.rb b/plugins/chat/db/post_migrate/20221027090832_migrate_dm_channels.rb new file mode 100644 index 00000000000..f2510486d66 --- /dev/null +++ b/plugins/chat/db/post_migrate/20221027090832_migrate_dm_channels.rb @@ -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 diff --git a/plugins/chat/lib/chat_channel_fetcher.rb b/plugins/chat/lib/chat_channel_fetcher.rb index 30cb34e8ee7..714737043fd 100644 --- a/plugins/chat/lib/chat_channel_fetcher.rb +++ b/plugins/chat/lib/chat_channel_fetcher.rb @@ -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 diff --git a/plugins/chat/lib/chat_mailer.rb b/plugins/chat/lib/chat_mailer.rb index a40df7f3b54..4cfdde2e346 100644 --- a/plugins/chat/lib/chat_mailer.rb +++ b/plugins/chat/lib/chat_mailer.rb @@ -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") diff --git a/plugins/chat/lib/direct_message_channel_creator.rb b/plugins/chat/lib/direct_message_channel_creator.rb index 9c0f93b69f1..06315b8a476 100644 --- a/plugins/chat/lib/direct_message_channel_creator.rb +++ b/plugins/chat/lib/direct_message_channel_creator.rb @@ -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) diff --git a/plugins/chat/lib/discourse_dev/direct_channel.rb b/plugins/chat/lib/discourse_dev/direct_channel.rb index 87d57066364..4ee6e835fe2 100644 --- a/plugins/chat/lib/discourse_dev/direct_channel.rb +++ b/plugins/chat/lib/discourse_dev/direct_channel.rb @@ -6,7 +6,7 @@ require "faker" module DiscourseDev class DirectChannel < Record def initialize - super(::DirectMessageChannel, 5) + super(::DirectMessage, 5) end def data diff --git a/plugins/chat/lib/discourse_dev/message.rb b/plugins/chat/lib/discourse_dev/message.rb index a82f5cd8933..6cd72225a11 100644 --- a/plugins/chat/lib/discourse_dev/message.rb +++ b/plugins/chat/lib/discourse_dev/message.rb @@ -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 diff --git a/plugins/chat/lib/extensions/user_notifications_extension.rb b/plugins/chat/lib/extensions/user_notifications_extension.rb index fab9f70ea10..6dd71b609cd 100644 --- a/plugins/chat/lib/extensions/user_notifications_extension.rb +++ b/plugins/chat/lib/extensions/user_notifications_extension.rb @@ -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 diff --git a/plugins/chat/lib/guardian_extensions.rb b/plugins/chat/lib/guardian_extensions.rb index c251da81b33..b07bce24f85 100644 --- a/plugins/chat/lib/guardian_extensions.rb +++ b/plugins/chat/lib/guardian_extensions.rb @@ -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 diff --git a/plugins/chat/plugin.rb b/plugins/chat/plugin.rb index cad907e40c5..fbda6686e51 100644 --- a/plugins/chat/plugin.rb +++ b/plugins/chat/plugin.rb @@ -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__) diff --git a/plugins/chat/spec/components/chat_message_creator_spec.rb b/plugins/chat/spec/components/chat_message_creator_spec.rb index 95567408dac..1128ab9cc9d 100644 --- a/plugins/chat/spec/components/chat_message_creator_spec.rb +++ b/plugins/chat/spec/components/chat_message_creator_spec.rb @@ -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}", ) diff --git a/plugins/chat/spec/fabricators/chat_fabricator.rb b/plugins/chat/spec/fabricators/chat_fabricator.rb index 0d492c7d70a..42dbf855cee 100644 --- a/plugins/chat/spec/fabricators/chat_fabricator.rb +++ b/plugins/chat/spec/fabricators/chat_fabricator.rb @@ -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) } diff --git a/plugins/chat/spec/jobs/delete_old_chat_messages_spec.rb b/plugins/chat/spec/jobs/delete_old_chat_messages_spec.rb index 07f7f31604f..6aafe1984ad 100644 --- a/plugins/chat/spec/jobs/delete_old_chat_messages_spec.rb +++ b/plugins/chat/spec/jobs/delete_old_chat_messages_spec.rb @@ -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 diff --git a/plugins/chat/spec/jobs/regular/auto_join_channel_batch_spec.rb b/plugins/chat/spec/jobs/regular/auto_join_channel_batch_spec.rb index 4209caa940e..568b94e8dad 100644 --- a/plugins/chat/spec/jobs/regular/auto_join_channel_batch_spec.rb +++ b/plugins/chat/spec/jobs/regular/auto_join_channel_batch_spec.rb @@ -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) diff --git a/plugins/chat/spec/jobs/regular/auto_manage_channel_memberships_spec.rb b/plugins/chat/spec/jobs/regular/auto_manage_channel_memberships_spec.rb index cab7596d013..b89e7f2c1f4 100644 --- a/plugins/chat/spec/jobs/regular/auto_manage_channel_memberships_spec.rb +++ b/plugins/chat/spec/jobs/regular/auto_manage_channel_memberships_spec.rb @@ -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 diff --git a/plugins/chat/spec/jobs/regular/chat_notify_watching_spec.rb b/plugins/chat/spec/jobs/regular/chat_notify_watching_spec.rb index b01beadcb20..b62a7a0573c 100644 --- a/plugins/chat/spec/jobs/regular/chat_notify_watching_spec.rb +++ b/plugins/chat/spec/jobs/regular/chat_notify_watching_spec.rb @@ -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 diff --git a/plugins/chat/spec/lib/chat_channel_fetcher_spec.rb b/plugins/chat/spec/lib/chat_channel_fetcher_spec.rb index cfa1b048724..5a51d999d70 100644 --- a/plugins/chat/spec/lib/chat_channel_fetcher_spec.rb +++ b/plugins/chat/spec/lib/chat_channel_fetcher_spec.rb @@ -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) diff --git a/plugins/chat/spec/lib/chat_message_bookmarkable_spec.rb b/plugins/chat/spec/lib/chat_message_bookmarkable_spec.rb index 716632c9e89..a78aa55588c 100644 --- a/plugins/chat/spec/lib/chat_message_bookmarkable_spec.rb +++ b/plugins/chat/spec/lib/chat_message_bookmarkable_spec.rb @@ -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) diff --git a/plugins/chat/spec/lib/chat_review_queue_spec.rb b/plugins/chat/spec/lib/chat_review_queue_spec.rb index 5c0539ed63e..2a1023fa158 100644 --- a/plugins/chat/spec/lib/chat_review_queue_spec.rb +++ b/plugins/chat/spec/lib/chat_review_queue_spec.rb @@ -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 diff --git a/plugins/chat/spec/lib/direct_message_channel_creator_spec.rb b/plugins/chat/spec/lib/direct_message_channel_creator_spec.rb index aa8dad3eb6a..efdb0310a63 100644 --- a/plugins/chat/spec/lib/direct_message_channel_creator_spec.rb +++ b/plugins/chat/spec/lib/direct_message_channel_creator_spec.rb @@ -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 diff --git a/plugins/chat/spec/lib/guardian_extensions_spec.rb b/plugins/chat/spec/lib/guardian_extensions_spec.rb index a54eefa3882..8975357846a 100644 --- a/plugins/chat/spec/lib/guardian_extensions_spec.rb +++ b/plugins/chat/spec/lib/guardian_extensions_spec.rb @@ -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) diff --git a/plugins/chat/spec/lib/message_mover_spec.rb b/plugins/chat/spec/lib/message_mover_spec.rb index 571bb3076b9..43182c64c1f 100644 --- a/plugins/chat/spec/lib/message_mover_spec.rb +++ b/plugins/chat/spec/lib/message_mover_spec.rb @@ -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 diff --git a/plugins/chat/spec/mailers/user_notifications_spec.rb b/plugins/chat/spec/mailers/user_notifications_spec.rb index 7eb41de19e1..d872efdab55 100644 --- a/plugins/chat/spec/mailers/user_notifications_spec.rb +++ b/plugins/chat/spec/mailers/user_notifications_spec.rb @@ -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", diff --git a/plugins/chat/spec/models/d_m_channel_spec.rb b/plugins/chat/spec/models/d_m_channel_spec.rb deleted file mode 100644 index 519b9555fbb..00000000000 --- a/plugins/chat/spec/models/d_m_channel_spec.rb +++ /dev/null @@ -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 diff --git a/plugins/chat/spec/models/direct_message_channel_spec.rb b/plugins/chat/spec/models/direct_message_channel_spec.rb index eaffb494893..85674e858fb 100644 --- a/plugins/chat/spec/models/direct_message_channel_spec.rb +++ b/plugins/chat/spec/models/direct_message_channel_spec.rb @@ -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 diff --git a/plugins/chat/spec/models/direct_message_spec.rb b/plugins/chat/spec/models/direct_message_spec.rb new file mode 100644 index 00000000000..9e44e51cd5d --- /dev/null +++ b/plugins/chat/spec/models/direct_message_spec.rb @@ -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 diff --git a/plugins/chat/spec/plugin_spec.rb b/plugins/chat/spec/plugin_spec.rb index bfb5794d42c..fdf17580d0c 100644 --- a/plugins/chat/spec/plugin_spec.rb +++ b/plugins/chat/spec/plugin_spec.rb @@ -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 diff --git a/plugins/chat/spec/queries/chat_channel_memberships_query_spec.rb b/plugins/chat/spec/queries/chat_channel_memberships_query_spec.rb index cb8a681626b..73cfa74ce9f 100644 --- a/plugins/chat/spec/queries/chat_channel_memberships_query_spec.rb +++ b/plugins/chat/spec/queries/chat_channel_memberships_query_spec.rb @@ -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 diff --git a/plugins/chat/spec/requests/api/chat_channel_notifications_settings_controller_spec.rb b/plugins/chat/spec/requests/api/chat_channel_notifications_settings_controller_spec.rb index 0ab7ddceb8a..cf27b5bcdee 100644 --- a/plugins/chat/spec/requests/api/chat_channel_notifications_settings_controller_spec.rb +++ b/plugins/chat/spec/requests/api/chat_channel_notifications_settings_controller_spec.rb @@ -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, diff --git a/plugins/chat/spec/requests/api/chat_channels_controller_spec.rb b/plugins/chat/spec/requests/api/chat_channels_controller_spec.rb index 32e8aa61a64..4083ab0c6ba 100644 --- a/plugins/chat/spec/requests/api/chat_channels_controller_spec.rb +++ b/plugins/chat/spec/requests/api/chat_channels_controller_spec.rb @@ -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) } diff --git a/plugins/chat/spec/requests/chat_channel_controller_spec.rb b/plugins/chat/spec/requests/chat_channel_controller_spec.rb index b2f05aa45c7..f40a9ca0149 100644 --- a/plugins/chat/spec/requests/chat_channel_controller_spec.rb +++ b/plugins/chat/spec/requests/chat_channel_controller_spec.rb @@ -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) diff --git a/plugins/chat/spec/requests/chat_controller_spec.rb b/plugins/chat/spec/requests/chat_controller_spec.rb index 5550625f546..12f582cfd56 100644 --- a/plugins/chat/spec/requests/chat_controller_spec.rb +++ b/plugins/chat/spec/requests/chat_controller_spec.rb @@ -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 diff --git a/plugins/chat/spec/requests/direct_messages_controller_spec.rb b/plugins/chat/spec/requests/direct_messages_controller_spec.rb index 92e785a97f6..5a327efe33f 100644 --- a/plugins/chat/spec/requests/direct_messages_controller_spec.rb +++ b/plugins/chat/spec/requests/direct_messages_controller_spec.rb @@ -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)], diff --git a/plugins/chat/spec/serializer/chat_message_serializer_spec.rb b/plugins/chat/spec/serializer/chat_message_serializer_spec.rb index bad12661f53..ea97d0310de 100644 --- a/plugins/chat/spec/serializer/chat_message_serializer_spec.rb +++ b/plugins/chat/spec/serializer/chat_message_serializer_spec.rb @@ -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) } diff --git a/plugins/chat/spec/serializer/direct_message_channel_serializer_spec.rb b/plugins/chat/spec/serializer/direct_message_channel_serializer_spec.rb deleted file mode 100644 index 9b95f0737d0..00000000000 --- a/plugins/chat/spec/serializer/direct_message_channel_serializer_spec.rb +++ /dev/null @@ -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 diff --git a/plugins/chat/spec/serializer/direct_message_serializer_spec.rb b/plugins/chat/spec/serializer/direct_message_serializer_spec.rb new file mode 100644 index 00000000000..0747661ce64 --- /dev/null +++ b/plugins/chat/spec/serializer/direct_message_serializer_spec.rb @@ -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 diff --git a/plugins/chat/spec/serializer/structured_channel_serializer_spec.rb b/plugins/chat/spec/serializer/structured_channel_serializer_spec.rb index f0956df5473..503760588eb 100644 --- a/plugins/chat/spec/serializer/structured_channel_serializer_spec.rb +++ b/plugins/chat/spec/serializer/structured_channel_serializer_spec.rb @@ -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 diff --git a/plugins/chat/spec/support/examples/chat_channel_model.rb b/plugins/chat/spec/support/examples/chat_channel_model.rb index ed2f1a9aabd..8613220636d 100644 --- a/plugins/chat/spec/support/examples/chat_channel_model.rb +++ b/plugins/chat/spec/support/examples/chat_channel_model.rb @@ -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) } diff --git a/plugins/chat/test/javascripts/acceptance/chat-sidebar-user-status-test.js b/plugins/chat/test/javascripts/acceptance/chat-sidebar-user-status-test.js index 0f54415bcd2..0cb4d62fdcc 100644 --- a/plugins/chat/test/javascripts/acceptance/chat-sidebar-user-status-test.js +++ b/plugins/chat/test/javascripts/acceptance/chat-sidebar-user-status-test.js @@ -32,7 +32,7 @@ acceptance("Discourse Chat - Sidebar - User Status", function (needs) { }, ], }, - chatable_type: "DirectMessageChannel", + chatable_type: "DirectMessage", title: "@user1", }; diff --git a/plugins/chat/test/javascripts/acceptance/chat-test.js b/plugins/chat/test/javascripts/acceptance/chat-test.js index fcc5414d900..36cb1bb54a8 100644 --- a/plugins/chat/test/javascripts/acceptance/chat-test.js +++ b/plugins/chat/test/javascripts/acceptance/chat-test.js @@ -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" }], diff --git a/plugins/chat/test/javascripts/acceptance/core-sidebar-test.js b/plugins/chat/test/javascripts/acceptance/core-sidebar-test.js index 0af71d60502..ea2a709feae 100644 --- a/plugins/chat/test/javascripts/acceptance/core-sidebar-test.js +++ b/plugins/chat/test/javascripts/acceptance/core-sidebar-test.js @@ -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: "@", @@ -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" }], diff --git a/plugins/chat/test/javascripts/acceptance/user-card-chat-test.js b/plugins/chat/test/javascripts/acceptance/user-card-chat-test.js index cfa0bb3b6ce..2387a614ef7 100644 --- a/plugins/chat/test/javascripts/acceptance/user-card-chat-test.js +++ b/plugins/chat/test/javascripts/acceptance/user-card-chat-test.js @@ -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", diff --git a/plugins/chat/test/javascripts/chat-fixtures.js b/plugins/chat/test/javascripts/chat-fixtures.js index 3206fd7962f..1877116d9f2 100644 --- a/plugins/chat/test/javascripts/chat-fixtures.js +++ b/plugins/chat/test/javascripts/chat-fixtures.js @@ -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", diff --git a/plugins/chat/test/javascripts/components/chat-channel-leave-btn-test.js b/plugins/chat/test/javascripts/components/chat-channel-leave-btn-test.js index 65828f16ec9..786f65b946c 100644 --- a/plugins/chat/test/javascripts/components/chat-channel-leave-btn-test.js +++ b/plugins/chat/test/javascripts/components/chat-channel-leave-btn-test.js @@ -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) { diff --git a/plugins/chat/test/javascripts/components/chat-composer-placeholder-test.js b/plugins/chat/test/javascripts/components/chat-composer-placeholder-test.js index c68d222c63a..76a3098ca4c 100644 --- a/plugins/chat/test/javascripts/components/chat-composer-placeholder-test.js +++ b/plugins/chat/test/javascripts/components/chat-composer-placeholder-test.js @@ -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" }, diff --git a/plugins/chat/test/javascripts/components/chat-retention-reminder-test.js b/plugins/chat/test/javascripts/components/chat-retention-reminder-test.js index 3d4145ba53a..89620f1c930 100644 --- a/plugins/chat/test/javascripts/components/chat-retention-reminder-test.js +++ b/plugins/chat/test/javascripts/components/chat-retention-reminder-test.js @@ -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;