developer_deletes_tag_spec.rb 1.3 KB
Newer Older
R
Rémy Coutable 已提交
1 2
require 'spec_helper'

M
Manoj MJ 已提交
3
describe 'Developer deletes tag' do
R
Rémy Coutable 已提交
4
  let(:user) { create(:user) }
M
Manoj MJ 已提交
5 6
  let(:group) { create(:group) }
  let(:project) { create(:project, :repository, namespace: group) }
R
Rémy Coutable 已提交
7 8

  before do
M
Manoj MJ 已提交
9
    project.add_developer(user)
10
    sign_in(user)
11
    visit project_tags_path(project)
R
Rémy Coutable 已提交
12 13
  end

14
  context 'from the tags list page', :js do
15
    it 'deletes the tag' do
R
Rémy Coutable 已提交
16 17
      expect(page).to have_content 'v1.1.0'

18
      delete_first_tag
R
Rémy Coutable 已提交
19 20 21 22 23 24

      expect(page).not_to have_content 'v1.1.0'
    end
  end

  context 'from a specific tag page' do
25
    it 'deletes the tag' do
R
Rémy Coutable 已提交
26 27
      click_on 'v1.0.0'
      expect(current_path).to eq(
28
        project_tag_path(project, 'v1.0.0'))
R
Rémy Coutable 已提交
29 30 31 32

      click_on 'Delete tag'

      expect(current_path).to eq(
33
        project_tags_path(project))
R
Rémy Coutable 已提交
34 35 36
      expect(page).not_to have_content 'v1.0.0'
    end
  end
37

38
  context 'when pre-receive hook fails', :js do
39 40
    before do
      allow_any_instance_of(Gitlab::GitalyClient::OperationService).to receive(:rm_tag)
41
        .and_raise(Gitlab::Git::PreReceiveError, 'GitLab: Do not delete tags')
42 43
    end

44
    it 'shows the error message' do
45
      delete_first_tag
46

47
      expect(page).to have_content('Do not delete tags')
48 49 50 51 52
    end
  end

  def delete_first_tag
    page.within('.content') do
53
      accept_confirm { first('.btn-remove').click }
54 55
    end
  end
R
Rémy Coutable 已提交
56
end