45 lines
1.7 KiB
Ruby
45 lines
1.7 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe UserBlocks::ChannelHandler, type: :service do
|
|
before do
|
|
create_list(:user, 2)
|
|
blocker = User.first
|
|
blocked = User.second
|
|
chat_channel = create(:chat_channel, channel_type: "direct", status: "active",
|
|
slug: "#{blocker.username}/#{blocked.username}")
|
|
create(:chat_channel_membership, user: blocker, chat_channel: chat_channel)
|
|
create(:chat_channel_membership, user: blocked, chat_channel: chat_channel)
|
|
create(:user_block, blocker: blocker, blocked: blocked)
|
|
end
|
|
|
|
describe ".get_potential_chat_channel" do
|
|
it "returns the correct channel" do
|
|
expect(described_class.new(UserBlock.first).get_potential_chat_channel).to eq(ChatChannel.first)
|
|
end
|
|
end
|
|
|
|
describe ".block_chat_channel" do
|
|
it "updates the chat channel status to blocked" do
|
|
described_class.new(UserBlock.first).block_chat_channel
|
|
expect(ChatChannel.first.status).to eq "blocked"
|
|
end
|
|
|
|
it "removes the related chat channel memberships" do
|
|
expect { described_class.new(UserBlock.first).block_chat_channel }
|
|
.to change(ChatChannelMembership.where(status: "active"), :count).to 0
|
|
end
|
|
end
|
|
|
|
describe ".unblock_chat_channel" do
|
|
it "updates the chat channel status to be active" do
|
|
described_class.new(UserBlock.first).unblock_chat_channel
|
|
expect(ChatChannel.first.status).to eq "active"
|
|
end
|
|
|
|
it "updates the related chat channel memberships" do
|
|
ChatChannelMembership.update_all(status: "left-channel")
|
|
expect { described_class.new(UserBlock.first).unblock_chat_channel }
|
|
.to change(ChatChannelMembership.where(status: "left-channel"), :count).to 0
|
|
end
|
|
end
|
|
end
|