discourse/plugins/chat/spec/models/category_spec.rb
Loïc Guitaut 9c482a645c FIX: Allow deletion of categories when chat channel is not present
Currently it’s not possible to delete a category if an associated chat
channel is present even if there are no messages in this channel.
This can lead to annoying situations for our users.

This patch addresses the issue by checking if the channel is empty
instead of just checking if there is a channel.
2022-11-08 10:25:39 +01:00

55 lines
1.4 KiB
Ruby

# frozen_string_literal: true
require "rails_helper"
RSpec.describe Category do
it_behaves_like "a chatable model" do
fab!(:chatable) { Fabricate(:category) }
let(:channel_class) { CategoryChannel }
end
it { is_expected.to have_one(:category_channel) }
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