1# frozen_string_literal: true 2 3require 'spec_helper' 4 5RSpec.describe 'help/index' do 6 include StubVersion 7 8 describe 'version information' do 9 before do 10 stub_helpers 11 end 12 13 it 'is hidden from guests' do 14 stub_user(nil) 15 stub_version('8.0.2', 'abcdefg') 16 17 render 18 19 expect(rendered).not_to match '8.0.2' 20 expect(rendered).not_to match 'abcdefg' 21 end 22 23 context 'when logged in' do 24 def version_link_regexp(path) 25 base_url = "#{view.source_host_url}/#{view.source_code_group}" 26 %r{#{Regexp.escape(base_url)}/(gitlab|gitlab\-foss)/#{Regexp.escape(path)}} 27 end 28 29 before do 30 stub_user 31 end 32 33 it 'shows a link to the tag to users' do 34 stub_version('8.0.2', 'abcdefg') 35 36 render 37 38 expect(rendered).to match '8.0.2' 39 expect(rendered).to have_link('8.0.2', href: version_link_regexp('-/tags/v8.0.2')) 40 end 41 42 it 'shows a link to the commit for pre-releases' do 43 stub_version('8.0.2-pre', 'abcdefg') 44 45 render 46 47 expect(rendered).to match '8.0.2' 48 expect(rendered).to have_link('abcdefg', href: version_link_regexp('-/commits/abcdefg')) 49 end 50 end 51 end 52 53 describe 'instance configuration link' do 54 it 'is visible to guests' do 55 render 56 57 expect(rendered).to have_link(nil, href: help_instance_configuration_url) 58 end 59 end 60 61 describe 'Markdown rendering' do 62 before do 63 assign(:help_index, 'Welcome to [GitLab](https://about.gitlab.com/) Documentation.') 64 end 65 66 it 'renders Markdown' do 67 render 68 69 expect(rendered).to have_link('GitLab', href: 'https://about.gitlab.com/') 70 end 71 end 72 73 def stub_user(user = double) 74 allow(view).to receive(:user_signed_in?).and_return(user) 75 end 76 77 def stub_helpers 78 allow(view).to receive(:markdown).and_return('') 79 allow(view).to receive(:version_status_badge).and_return('') 80 allow(view).to receive(:current_application_settings).and_return(Gitlab::CurrentSettings.current_application_settings) 81 end 82end 83