# rubocop:disable RSpec/MultipleExpectations require "rails_helper" RSpec.describe ChatChannel, type: :model do let(:chat_channel) { create(:chat_channel) } let(:message) { create(:chat_channel, message_id: chat_channel.id) } it { is_expected.to have_many(:messages) } it { is_expected.to validate_presence_of(:channel_type) } it "clears chat" do allow(Pusher).to receive(:trigger) chat_channel.clear_channel expect(chat_channel.messages.size).to eq(0) end it "creates channel with users" do chat_channel = ChatChannel.create_with_users([create(:user), create(:user)]) expect(chat_channel.users.size).to eq(2) expect(chat_channel.has_member?(User.first)).to eq(true) end it "lists active memberships" do chat_channel = ChatChannel.create_with_users([create(:user), create(:user)]) expect(chat_channel.active_users.size).to eq(2) expect(chat_channel.channel_users.size).to eq(2) end it "decreases active users if one leaves" do chat_channel = ChatChannel.create_with_users([create(:user), create(:user)]) ChatChannelMembership.last.update(status: "left_channel") expect(chat_channel.active_users.size).to eq(1) expect(chat_channel.channel_users.size).to eq(1) end end # rubocop:enable RSpec/MultipleExpectations