diff options
Diffstat (limited to 'spec/services/labels/destroy_service_spec.rb')
-rw-r--r-- | spec/services/labels/destroy_service_spec.rb | 44 |
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 |