developer_deletes_tag_spec.rb 1.5 KB
Newer Older
1 2
# frozen_string_literal: true

R
Rémy Coutable 已提交
3 4
require 'spec_helper'

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

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

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

20
      delete_tag 'v1.1.0'
R
Rémy Coutable 已提交
21 22 23 24 25 26

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

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

      click_on 'Delete tag'

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

40
  context 'when pre-receive hook fails', :js do
41
    before do
42 43 44 45
      allow_next_instance_of(Gitlab::GitalyClient::OperationService) do |instance|
        allow(instance).to receive(:rm_tag)
          .and_raise(Gitlab::Git::PreReceiveError, 'GitLab: Do not delete tags')
      end
46 47
    end

48
    it 'shows the error message' do
49
      delete_tag 'v1.1.0'
50

51
      expect(page).to have_content('Do not delete tags')
52 53 54
    end
  end

55
  def delete_tag(tag)
56
    page.within('.content') do
57
      accept_confirm { find("li > .row-fixed-content.controls a.btn-remove[href='/#{project.full_path}/-/tags/#{tag}']").click }
58 59
    end
  end
R
Rémy Coutable 已提交
60
end