From 828bfd9d27e87e3ab24f0b92292f804b1844a3fc Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 17 Apr 2018 10:08:21 +0800 Subject: [PATCH] Add specs for https://github.com/discourse/discourse/commit/c74c933996e2775ca7765a82916adc6ca7055226. --- .../guardian/category_guardian_spec.rb | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 spec/components/guardian/category_guardian_spec.rb diff --git a/spec/components/guardian/category_guardian_spec.rb b/spec/components/guardian/category_guardian_spec.rb new file mode 100644 index 00000000000..3dccbb9e075 --- /dev/null +++ b/spec/components/guardian/category_guardian_spec.rb @@ -0,0 +1,47 @@ +require 'rails_helper' + +RSpec.describe CategoryGuardian do + let(:admin) { Fabricate(:admin) } + let(:guardian) { Guardian.new(admin) } + let(:category) { Fabricate(:category) } + + describe '#cannot_delete_category_reason' do + describe 'when category is uncategorized' do + it 'should return the reason' do + category = Category.find(SiteSetting.uncategorized_category_id) + + expect(guardian.cannot_delete_category_reason(category)).to eq( + I18n.t('category.cannot_delete.uncategorized') + ) + end + end + + describe 'when category has subcategories' do + it 'should return the right reason' do + category.subcategories << Fabricate(:category) + + expect(guardian.cannot_delete_category_reason(category)).to eq( + I18n.t('category.cannot_delete.has_subcategories') + ) + end + end + + describe 'when category has topics' do + it 'should return the right reason' do + topic = Fabricate(:topic, + title: '', + category: category + ) + + category.reload + + expect(guardian.cannot_delete_category_reason(category)).to eq( + I18n.t('category.cannot_delete.topic_exists', + count: 1, + topic_link: "</a><script>alert(document.cookie);</script><a>" + ) + ) + end + end + end +end