diff options
author | dixpac <dino.onex@gmail.com> | 2017-02-14 18:33:50 +0300 |
---|---|---|
committer | dixpac <dino.onex@gmail.com> | 2017-02-14 18:43:35 +0300 |
commit | 613856face7f2ea58c229682a3acbba3e64be01b (patch) | |
tree | 8e40292c26331480e998fa5155ac0ba6eecee347 /spec/services/tags | |
parent | f802ad370e625e7aa2f3023f73c24a8b6f009821 (diff) |
Move tag services to `Tags` namespace
CreateTagService and DeleteTagService where in root namespace, by
following service code organization I moved them in Tags::CreateService
and Tags::DestroyService
Diffstat (limited to 'spec/services/tags')
-rw-r--r-- | spec/services/tags/create_service_spec.rb | 53 | ||||
-rw-r--r-- | spec/services/tags/destroy_service_spec.rb | 17 |
2 files changed, 70 insertions, 0 deletions
diff --git a/spec/services/tags/create_service_spec.rb b/spec/services/tags/create_service_spec.rb new file mode 100644 index 00000000000..5478b8c9ec0 --- /dev/null +++ b/spec/services/tags/create_service_spec.rb @@ -0,0 +1,53 @@ +require 'spec_helper' + +describe Tags::CreateService, services: true do + let(:project) { create(:project) } + let(:repository) { project.repository } + let(:user) { create(:user) } + let(:service) { described_class.new(project, user) } + + describe '#execute' do + it 'creates the tag and returns success' do + response = service.execute('v42.42.42', 'master', 'Foo') + + expect(response[:status]).to eq(:success) + expect(response[:tag]).to be_a Gitlab::Git::Tag + expect(response[:tag].name).to eq('v42.42.42') + end + + context 'when target is invalid' do + it 'returns an error' do + response = service.execute('v1.1.0', 'foo', 'Foo') + + expect(response).to eq(status: :error, + message: 'Target foo is invalid') + end + end + + context 'when tag already exists' do + it 'returns an error' do + expect(repository).to receive(:add_tag). + with(user, 'v1.1.0', 'master', 'Foo'). + and_raise(Rugged::TagError) + + response = service.execute('v1.1.0', 'master', 'Foo') + + expect(response).to eq(status: :error, + message: 'Tag v1.1.0 already exists') + end + end + + context 'when pre-receive hook fails' do + it 'returns an error' do + expect(repository).to receive(:add_tag). + with(user, 'v1.1.0', 'master', 'Foo'). + and_raise(GitHooksService::PreReceiveError, 'something went wrong') + + response = service.execute('v1.1.0', 'master', 'Foo') + + expect(response).to eq(status: :error, + message: 'something went wrong') + end + end + end +end diff --git a/spec/services/tags/destroy_service_spec.rb b/spec/services/tags/destroy_service_spec.rb new file mode 100644 index 00000000000..a388c93379a --- /dev/null +++ b/spec/services/tags/destroy_service_spec.rb @@ -0,0 +1,17 @@ +require 'spec_helper' + +describe Tags::DestroyService, services: true do + let(:project) { create(:project) } + let(:repository) { project.repository } + let(:user) { create(:user) } + let(:service) { described_class.new(project, user) } + + describe '#execute' do + it 'removes the tag' do + expect(repository).to receive(:before_remove_tag) + expect(service).to receive(:success) + + service.execute('v1.1.0') + end + end +end |