diff options
Diffstat (limited to 'spec/services/labels/update_service_spec.rb')
-rw-r--r-- | spec/services/labels/update_service_spec.rb | 51 |
1 files changed, 40 insertions, 11 deletions
diff --git a/spec/services/labels/update_service_spec.rb b/spec/services/labels/update_service_spec.rb index e743bdfd0f2..24123ca22d9 100644 --- a/spec/services/labels/update_service_spec.rb +++ b/spec/services/labels/update_service_spec.rb @@ -2,8 +2,9 @@ require 'spec_helper' describe Labels::UpdateService, 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) } let(:params) do { @@ -13,7 +14,7 @@ describe Labels::UpdateService, services: true do } end - context 'with a group as subject' do + context 'with a group label' do let(:label) { create(:label, subject: group, title: 'Bug') } subject(:service) { described_class.new(group, double, params) } @@ -24,28 +25,56 @@ describe Labels::UpdateService, services: true do expect(label).to have_attributes(params) end - it 'updates 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 'updates the label of all projects inside the group' do + label1 = create(:group_label, subject: project1, title: 'Bug') + label2 = create(:group_label, subject: project2, title: 'Bug') - service.execute(label) + service.execute(label1) - expect(project1.labels.where(params)).not_to be_empty - expect(project2.labels.where(params)).not_to be_empty + expect(label1.reload).to have_attributes(params) + expect(label2.reload).to have_attributes(params) end end - context 'with a project as subject' do + context 'with a project label' do subject(:service) { described_class.new(project1, double, params) } it 'updates the project label' do - label = create(:label, subject: project1) + label = create(:project_label, subject: project1) service.execute(label) expect(label).to have_attributes(params) end + + context 'inherited from a group' do + it 'updates the group label' do + label1 = create(:group_label, subject: group, title: 'Bug') + label2 = create(:group_label, subject: project1, title: 'Bug') + + service.execute(label2) + + expect(label1.reload).to have_attributes(params) + end + + it 'updates the label of all projects inside the group' do + label1 = create(:group_label, subject: project1, title: 'Bug') + label2 = create(:group_label, subject: project2, title: 'Bug') + + service.execute(label1) + + expect(label1.reload).to have_attributes(params) + expect(label2.reload).to have_attributes(params) + end + + it 'updates the project label' do + label = create(:group_label, subject: project1) + + service.execute(label) + + expect(label).to have_attributes(params) + end + end end end end |