summaryrefslogtreecommitdiff
path: root/spec/services/labels/destroy_service_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/services/labels/destroy_service_spec.rb')
-rw-r--r--spec/services/labels/destroy_service_spec.rb44
1 files changed, 33 insertions, 11 deletions
diff --git a/spec/services/labels/destroy_service_spec.rb b/spec/services/labels/destroy_service_spec.rb
index cb6b048862e..6d3810154e6 100644
--- a/spec/services/labels/destroy_service_spec.rb
+++ b/spec/services/labels/destroy_service_spec.rb
@@ -2,22 +2,22 @@ require 'spec_helper'
describe Labels::DestroyService, services: true do
describe '#execute' do
- let(:group) { create(:group) }
+ let!(:group) { create(:group) }
let!(:project1) { create(:empty_project, group: group) }
+ let!(:project2) { create(:empty_project, group: group) }
- context 'with a group as subject' do
- let!(:label) { create(:label, subject: group, title: 'Bug') }
+ context 'with a group label' do
+ let!(:label) { create(:group_label, subject: group, title: 'Bug') }
subject(:service) { described_class.new(group, double) }
- it 'removes the label' do
+ it 'removes the group label' do
expect { service.execute(label) }.to change(group.labels, :count).by(-1)
end
- it 'removes the label from projects of the group' do
- project2 = create(:empty_project, group: group)
- create(:label, subject: project1, title: 'Bug')
- create(:label, subject: project2, title: 'Bug')
+ it 'removes the label from all projects inside the group' do
+ create(:group_label, subject: project1, title: 'Bug')
+ create(:group_label, subject: project2, title: 'Bug')
service.execute(label)
@@ -26,14 +26,36 @@ describe Labels::DestroyService, services: true do
end
end
- context 'with a project as subject' do
+ context 'with a project label' do
subject(:service) { described_class.new(project1, double) }
- it 'removes the label' do
- label = create(:label, subject: project1)
+ it 'removes the project label' do
+ label = create(:project_label, subject: project1)
expect { service.execute(label) }.to change(project1.labels, :count).by(-1)
end
+
+ context 'inherited from a group' do
+ let!(:label) { create(:group_label, subject: project1, title: 'Bug') }
+
+ it 'removes the group label' do
+ create(:group_label, subject: group, title: 'Bug')
+
+ expect { service.execute(label) }.to change(group.labels, :count).by(-1)
+ end
+
+ it 'removes the label from all projects inside the group' do
+ create(:group_label, subject: project2, title: 'Bug')
+
+ service.execute(label)
+
+ expect(project2.labels.where(title: 'Bug')).to be_empty
+ end
+
+ it 'removes the project label' do
+ expect { service.execute(label) }.to change(project1.labels, :count).by(-1)
+ end
+ end
end
end
end