# frozen_string_literal: true require "rails_helper" describe ChatChannelSerializer do fab!(:user) { Fabricate(:user) } fab!(:admin) { Fabricate(:admin) } fab!(:chat_channel) { Fabricate(:chat_channel) } let(:guardian_user) { user } let(:guardian) { Guardian.new(guardian_user) } subject { described_class.new(chat_channel, scope: guardian, root: nil) } describe "archive status" do context "when user is not staff" do let(:guardian_user) { user } it "does not return any sort of archive status" do expect(subject.as_json.key?(:archive_completed)).to eq(false) end it "includes allow_channel_wide_mentions" do expect(subject.as_json.key?(:allow_channel_wide_mentions)).to eq(true) end end context "when user is staff" do let(:guardian_user) { admin } it "includes the archive status if the channel is archived and the archive record exists" do expect(subject.as_json.key?(:archive_completed)).to eq(false) chat_channel.update!(status: ChatChannel.statuses[:archived]) expect(subject.as_json.key?(:archive_completed)).to eq(false) ChatChannelArchive.create!( chat_channel: chat_channel, archived_by: admin, destination_topic_title: "This will be the archive topic", total_messages: 10, ) chat_channel.reload expect(subject.as_json.key?(:archive_completed)).to eq(true) end it "includes allow_channel_wide_mentions" do expect(subject.as_json.key?(:allow_channel_wide_mentions)).to eq(true) end end end end