diff options
author | Phil Hughes <me@iamphill.com> | 2016-10-19 22:33:34 +0100 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2016-10-19 22:33:34 +0100 |
commit | fcf0a4a12d1ca17438a99c2b7bf334b82fa0e26e (patch) | |
tree | 8e109ee1d989f741fd7c1b0fd26cfdbf9a545b31 /spec/services/labels/find_or_create_service_spec.rb | |
parent | cd5e83b6d6da3bddbc44334a1bcdbac287b35fb4 (diff) | |
parent | c08435e3c25f0a7a705ed8a49b16dde176b41a40 (diff) | |
download | gitlab-ce-fcf0a4a12d1ca17438a99c2b7bf334b82fa0e26e.tar.gz |
Merge branch 'master' into issue-board-sidebar
Diffstat (limited to 'spec/services/labels/find_or_create_service_spec.rb')
-rw-r--r-- | spec/services/labels/find_or_create_service_spec.rb | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/spec/services/labels/find_or_create_service_spec.rb b/spec/services/labels/find_or_create_service_spec.rb new file mode 100644 index 00000000000..cbfc63de811 --- /dev/null +++ b/spec/services/labels/find_or_create_service_spec.rb @@ -0,0 +1,51 @@ +require 'spec_helper' + +describe Labels::FindOrCreateService, services: true do + describe '#execute' do + let(:user) { create(:user) } + let(:group) { create(:group) } + let(:project) { create(:project, namespace: group) } + + let(:params) do + { + title: 'Security', + description: 'Security related stuff.', + color: '#FF0000' + } + end + + subject(:service) { described_class.new(user, project, params) } + + before do + project.team << [user, :developer] + end + + context 'when label does not exist at group level' do + it 'creates a new label at project level' do + expect { service.execute }.to change(project.labels, :count).by(1) + end + end + + context 'when label exists at group level' do + it 'returns the group label' do + group_label = create(:group_label, group: group, title: 'Security') + + expect(service.execute).to eq group_label + end + end + + context 'when label does not exist at group level' do + it 'creates a new label at project leve' do + expect { service.execute }.to change(project.labels, :count).by(1) + end + end + + context 'when label exists at project level' do + it 'returns the project label' do + project_label = create(:label, project: project, title: 'Security') + + expect(service.execute).to eq project_label + end + end + end +end |