undo_template_spec.rb 1.94 KB
Newer Older
1 2
require 'spec_helper'

3
describe 'Projects > Files > Template Undo Button', :js do
4
  let(:project) { create(:project, :repository) }
Rémy Coutable's avatar
Rémy Coutable committed
5
  let(:user) { project.owner }
6 7

  before do
8
    sign_in user
9
  end
10 11

  context 'editing a matching file and applying a template' do
12
    before do
13
      visit project_edit_blob_path(project, File.join(project.default_branch, "LICENSE"))
14 15
      select_file_template('.js-license-selector', 'Apache License 2.0')
    end
16

17
    it 'reverts template application' do
18
      try_template_undo('http://www.apache.org/licenses/', 'Apply a license template')
19 20
    end
  end
21

22
  context 'creating a non-matching file' do
23
    before do
24
      visit project_new_blob_path(project, 'master')
25 26 27 28
      select_file_template_type('LICENSE')
      select_file_template('.js-license-selector', 'Apache License 2.0')
    end

29
    it 'reverts template application' do
30
      try_template_undo('http://www.apache.org/licenses/', 'Apply a license template')
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
    end
  end
end

def try_template_undo(template_content, toggle_text)
  check_undo_button_display
  check_content_reverted(template_content)
  check_toggle_text_set(toggle_text)
end

def check_toggle_text_set(neutral_toggle_text)
  expect(page).to have_content(neutral_toggle_text)
end

def check_undo_button_display
  expect(page).to have_content('Template applied')
  expect(page).to have_css('.template-selectors-undo-menu .btn-info')
end

def check_content_reverted(template_content)
  find('.template-selectors-undo-menu .btn-info').click
  expect(page).not_to have_content(template_content)
  expect(find('.template-type-selector .dropdown-toggle-text')).to have_content()
end

def select_file_template(template_selector_selector, template_name)
  find(template_selector_selector).click
  find('.dropdown-content li', text: template_name).click
59
  wait_for_requests
60 61 62 63 64 65
end

def select_file_template_type(template_type)
  find('.js-template-type-selector').click
  find('.dropdown-content li', text: template_type).click
end