discourse/plugins/chat/spec/models/category_spec.rb

53 lines
1.4 KiB
Ruby

# frozen_string_literal: true
RSpec.describe Category do
it_behaves_like "a chatable model" do
fab!(:chatable) { Fabricate(:category) }
let(:channel_class) { Chat::CategoryChannel }
end
it { is_expected.to have_one(:category_channel).dependent(:destroy) }
describe "#cannot_delete_reason" do
subject(:reason) { category.cannot_delete_reason }
context "when a chat channel is present" do
let(:channel) { Fabricate(:category_channel) }
let(:category) { channel.chatable }
it "returns a message" do
expect(reason).to match I18n.t("category.cannot_delete.has_chat_channels")
end
end
end
describe "#deletable_for_chat?" do
subject(:category) { Fabricate.build(:category) }
context "when no category channel is present" do
it "returns true" do
expect(category).to be_deletable_for_chat
end
end
context "when a category channel is present" do
let(:channel) { Fabricate(:category_channel) }
let(:category) { channel.chatable }
context "when it has chat messages" do
before { Fabricate(:chat_message, chat_channel: channel) }
it "returns false" do
expect(category).not_to be_deletable_for_chat
end
end
context "when it has no chat messages" do
it "returns true" do
expect(category).to be_deletable_for_chat
end
end
end
end
end