diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-17 11:59:07 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-17 11:59:07 +0000 |
commit | 8b573c94895dc0ac0e1d9d59cf3e8745e8b539ca (patch) | |
tree | 544930fb309b30317ae9797a9683768705d664c4 /spec/views | |
parent | 4b1de649d0168371549608993deac953eb692019 (diff) | |
download | gitlab-ce-8b573c94895dc0ac0e1d9d59cf3e8745e8b539ca.tar.gz |
Add latest changes from gitlab-org/gitlab@13-7-stable-eev13.7.0-rc42
Diffstat (limited to 'spec/views')
-rw-r--r-- | spec/views/admin/application_settings/general.html.haml_spec.rb | 28 | ||||
-rw-r--r-- | spec/views/admin/dashboard/index.html.haml_spec.rb | 1 | ||||
-rw-r--r-- | spec/views/layouts/_head.html.haml_spec.rb | 14 | ||||
-rw-r--r-- | spec/views/projects/artifacts/_artifact.html.haml_spec.rb | 17 | ||||
-rw-r--r-- | spec/views/projects/commits/_commit.html.haml_spec.rb | 2 | ||||
-rw-r--r-- | spec/views/projects/empty.html.haml_spec.rb | 82 | ||||
-rw-r--r-- | spec/views/projects/merge_requests/show.html.haml_spec.rb | 39 | ||||
-rw-r--r-- | spec/views/search/_filter.html.haml_spec.rb | 2 | ||||
-rw-r--r-- | spec/views/search/_results.html.haml_spec.rb | 46 | ||||
-rw-r--r-- | spec/views/shared/wikis/_sidebar.html.haml_spec.rb | 83 |
10 files changed, 252 insertions, 62 deletions
diff --git a/spec/views/admin/application_settings/general.html.haml_spec.rb b/spec/views/admin/application_settings/general.html.haml_spec.rb index 5343847d755..434ca8bf0e7 100644 --- a/spec/views/admin/application_settings/general.html.haml_spec.rb +++ b/spec/views/admin/application_settings/general.html.haml_spec.rb @@ -33,32 +33,4 @@ RSpec.describe 'admin/application_settings/general.html.haml' do end end end - - describe 'Maintenance mode' do - let(:maintenance_mode_flag) { true } - - before do - assign(:application_setting, app_settings) - stub_feature_flags(maintenance_mode: maintenance_mode_flag) - allow(view).to receive(:current_user).and_return(user) - end - - context 'when maintenance_mode feature is enabled' do - it 'show the Maintenance mode section' do - render - - expect(rendered).to have_css('#js-maintenance-mode-toggle') - end - end - - context 'when maintenance_mode feature is disabled' do - let(:maintenance_mode_flag) { false } - - it 'hide the Maintenance mode section' do - render - - expect(rendered).not_to have_css('#js-maintenance-mode-toggle') - end - end - end end diff --git a/spec/views/admin/dashboard/index.html.haml_spec.rb b/spec/views/admin/dashboard/index.html.haml_spec.rb index e9223c84674..5494b908705 100644 --- a/spec/views/admin/dashboard/index.html.haml_spec.rb +++ b/spec/views/admin/dashboard/index.html.haml_spec.rb @@ -17,7 +17,6 @@ RSpec.describe 'admin/dashboard/index.html.haml' do allow(view).to receive(:admin?).and_return(true) allow(view).to receive(:current_application_settings).and_return(Gitlab::CurrentSettings.current_application_settings) - allow(view).to receive(:show_license_breakdown?).and_return(false) end it "shows version of GitLab Workhorse" do diff --git a/spec/views/layouts/_head.html.haml_spec.rb b/spec/views/layouts/_head.html.haml_spec.rb index 25fcbeb61df..d8748873f64 100644 --- a/spec/views/layouts/_head.html.haml_spec.rb +++ b/spec/views/layouts/_head.html.haml_spec.rb @@ -86,21 +86,21 @@ RSpec.describe 'layouts/_head' do end end - context 'when a Piwik config is set' do - let(:piwik_host) { 'piwik.example.com' } + context 'when a Matomo config is set' do + let(:matomo_host) { 'matomo.example.com' } before do stub_config(extra: { - piwik_url: piwik_host, - piwik_site_id: 12345 + matomo_url: matomo_host, + matomo_site_id: 12345 }) end - it 'add a Piwik Javascript' do + it 'add a Matomo Javascript' do render - expect(rendered).to match(/<script.*>.*var u="\/\/#{piwik_host}\/".*<\/script>/m) - expect(rendered).to match(%r(<noscript>.*<img src="//#{piwik_host}/piwik.php.*</noscript>)) + expect(rendered).to match(/<script.*>.*var u="\/\/#{matomo_host}\/".*<\/script>/m) + expect(rendered).to match(%r(<noscript>.*<img src="//#{matomo_host}/matomo.php.*</noscript>)) end end diff --git a/spec/views/projects/artifacts/_artifact.html.haml_spec.rb b/spec/views/projects/artifacts/_artifact.html.haml_spec.rb index b3bf54e143a..5d930d6b0f2 100644 --- a/spec/views/projects/artifacts/_artifact.html.haml_spec.rb +++ b/spec/views/projects/artifacts/_artifact.html.haml_spec.rb @@ -16,10 +16,21 @@ RSpec.describe "projects/artifacts/_artifact.html.haml" do context 'with admin' do let(:user) { build(:admin) } - it 'has a delete button' do - render_partial + context 'when admin mode is enabled', :enable_admin_mode do + it 'has a delete button' do + render_partial - expect(rendered).to have_link('Delete artifacts', href: project_artifact_path(project, project.job_artifacts.first)) + expect(rendered).to have_link('Delete artifacts', href: project_artifact_path(project, project.job_artifacts.first)) + end + end + + context 'when admin mode is disabled' do + it 'has no delete button' do + project.add_reporter(user) + render_partial + + expect(rendered).not_to have_link('Delete artifacts') + end end end diff --git a/spec/views/projects/commits/_commit.html.haml_spec.rb b/spec/views/projects/commits/_commit.html.haml_spec.rb index 898d3baae19..abbb3a168c3 100644 --- a/spec/views/projects/commits/_commit.html.haml_spec.rb +++ b/spec/views/projects/commits/_commit.html.haml_spec.rb @@ -22,7 +22,7 @@ RSpec.describe 'projects/commits/_commit.html.haml' do } within '.gpg-status-box' do - expect(page).not_to have_css('i.fa.fa-spinner.fa-spin') + expect(page).not_to have_css('.gl-spinner') end end end diff --git a/spec/views/projects/empty.html.haml_spec.rb b/spec/views/projects/empty.html.haml_spec.rb new file mode 100644 index 00000000000..de83722160e --- /dev/null +++ b/spec/views/projects/empty.html.haml_spec.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'projects/empty' do + let_it_be(:user) { create(:user) } + let_it_be(:project) { ProjectPresenter.new(create(:project, :empty_repo), current_user: user) } + + before do + allow(view).to receive(:experiment_enabled?).and_return(true) + allow(view).to receive(:current_user).and_return(user) + assign(:project, project) + end + + context 'when user can push code on the project' do + before do + allow(view).to receive(:can?).with(user, :push_code, project).and_return(true) + end + + it 'displays "git clone" instructions' do + render + + expect(rendered).to have_content("git clone") + end + end + + context 'when user can not push code on the project' do + before do + allow(view).to receive(:can?).with(user, :push_code, project).and_return(false) + end + + it 'does not display "git clone" instructions' do + render + + expect(rendered).not_to have_content("git clone") + end + end + + describe 'invite_members_empty_project_version_a experiment' do + let(:can_import_members) { true } + + before do + allow(view).to receive(:can_import_members?).and_return(can_import_members) + end + + shared_examples_for 'no invite member info' do + it 'does not show invite member info' do + render + + expect(rendered).not_to have_content('Invite your team') + end + end + + context 'when experiment is enabled' do + it 'shows invite members info', :aggregate_failures do + render + + expect(rendered).to have_selector('[data-track-event=render]') + expect(rendered).to have_selector('[data-track-label=invite_members_empty_project]', count: 2) + expect(rendered).to have_content('Invite your team') + expect(rendered).to have_content('Add members to this project and start collaborating with your team.') + expect(rendered).to have_link('Invite members', href: project_project_members_path(project, sort: :access_level_desc)) + expect(rendered).to have_selector('[data-track-event=click_button]') + end + + context 'when user does not have permissions to invite members' do + let(:can_import_members) { false } + + it_behaves_like 'no invite member info' + end + end + + context 'when experiment is not enabled' do + before do + allow(view).to receive(:experiment_enabled?) + .with(:invite_members_empty_project_version_a).and_return(false) + end + + it_behaves_like 'no invite member info' + end + end +end diff --git a/spec/views/projects/merge_requests/show.html.haml_spec.rb b/spec/views/projects/merge_requests/show.html.haml_spec.rb index 9b4f2774c5b..db41c9b5374 100644 --- a/spec/views/projects/merge_requests/show.html.haml_spec.rb +++ b/spec/views/projects/merge_requests/show.html.haml_spec.rb @@ -3,30 +3,45 @@ require 'spec_helper' RSpec.describe 'projects/merge_requests/show.html.haml' do + include Spec::Support::Helpers::Features::MergeRequestHelpers + before do allow(view).to receive(:experiment_enabled?).and_return(false) end - include_context 'merge request show action' - - describe 'merge request assignee sidebar' do - context 'when assignee is allowed to merge' do - it 'does not show a warning icon' do - closed_merge_request.update!(assignee_id: user.id) - project.add_maintainer(user) - assign(:issuable_sidebar, serialize_issuable_sidebar(user, project, closed_merge_request)) + context 'when the merge request is open' do + include_context 'open merge request show action' - render + it 'shows the "Mark as draft" button' do + render - expect(rendered).not_to have_css('.merge-icon') - end + expect(rendered).to have_css('a', visible: true, text: 'Mark as draft') + expect(rendered).to have_css('a', visible: false, text: 'Reopen') + expect(rendered).to have_css('a', visible: true, text: 'Close') end end context 'when the merge request is closed' do + include_context 'closed merge request show action' + + describe 'merge request assignee sidebar' do + context 'when assignee is allowed to merge' do + it 'does not show a warning icon' do + closed_merge_request.update!(assignee_id: user.id) + project.add_maintainer(user) + assign(:issuable_sidebar, serialize_issuable_sidebar(user, project, closed_merge_request)) + + render + + expect(rendered).not_to have_css('.merge-icon') + end + end + end + it 'shows the "Reopen" button' do render + expect(rendered).not_to have_css('a', visible: true, text: 'Mark as draft') expect(rendered).to have_css('a', visible: true, text: 'Reopen') expect(rendered).to have_css('a', visible: false, text: 'Close') end @@ -34,7 +49,7 @@ RSpec.describe 'projects/merge_requests/show.html.haml' do it 'does not show the "Reopen" button when the source project does not exist' do unlink_project.execute closed_merge_request.reload - preload_view_requirements + preload_view_requirements(closed_merge_request, note) render diff --git a/spec/views/search/_filter.html.haml_spec.rb b/spec/views/search/_filter.html.haml_spec.rb index 9a5ff2e4518..868408f7beb 100644 --- a/spec/views/search/_filter.html.haml_spec.rb +++ b/spec/views/search/_filter.html.haml_spec.rb @@ -11,7 +11,7 @@ RSpec.describe 'search/_filter' do expect(rendered).to have_selector('input#js-search-group-dropdown') expect(rendered).to have_selector('label[for="dashboard_search_project"]') - expect(rendered).to have_selector('button#dashboard_search_project') + expect(rendered).to have_selector('input#js-search-project-dropdown') end end end diff --git a/spec/views/search/_results.html.haml_spec.rb b/spec/views/search/_results.html.haml_spec.rb index 6299fd0cf36..8960d096143 100644 --- a/spec/views/search/_results.html.haml_spec.rb +++ b/spec/views/search/_results.html.haml_spec.rb @@ -3,17 +3,23 @@ require 'spec_helper' RSpec.describe 'search/_results' do + let(:user) { create(:user) } let(:search_objects) { Issue.page(1).per(2) } let(:scope) { 'issues' } + let(:term) { 'foo' } before do controller.params[:action] = 'show' + controller.params[:search] = term create_list(:issue, 3) @search_objects = search_objects @scope = scope - @search_term = 'foo' + @search_term = term + @search_service = SearchServicePresenter.new(SearchService.new(user, search: term, scope: scope)) + + allow(@search_service).to receive(:search_objects).and_return(search_objects) end it 'displays the page size' do @@ -48,11 +54,22 @@ RSpec.describe 'search/_results' do let(:scope) { search_scope } let(:search_objects) { Gitlab::ProjectSearchResults.new(user, '*', project: project).objects(scope) } - it 'renders the click text event tracking attributes' do - render + context 'when admin mode is enabled', :enable_admin_mode do + it 'renders the click text event tracking attributes' do + render + + expect(rendered).to have_selector('[data-track-event=click_text]') + expect(rendered).to have_selector('[data-track-property=search_result]') + end + end + + context 'when admin mode is disabled' do + it 'does not render the click text event tracking attributes' do + render - expect(rendered).to have_selector('[data-track-event=click_text]') - expect(rendered).to have_selector('[data-track-property=search_result]') + expect(rendered).not_to have_selector('[data-track-event=click_text]') + expect(rendered).not_to have_selector('[data-track-property=search_result]') + end end it 'does render the sidebar' do @@ -68,11 +85,22 @@ RSpec.describe 'search/_results' do let(:scope) { search_scope } let(:search_objects) { Gitlab::ProjectSearchResults.new(user, '*', project: project).objects(scope) } - it 'renders the click text event tracking attributes' do - render + context 'when admin mode is enabled', :enable_admin_mode do + it 'renders the click text event tracking attributes' do + render + + expect(rendered).to have_selector('[data-track-event=click_text]') + expect(rendered).to have_selector('[data-track-property=search_result]') + end + end + + context 'when admin mode is disabled' do + it 'does not render the click text event tracking attributes' do + render - expect(rendered).to have_selector('[data-track-event=click_text]') - expect(rendered).to have_selector('[data-track-property=search_result]') + expect(rendered).not_to have_selector('[data-track-event=click_text]') + expect(rendered).not_to have_selector('[data-track-property=search_result]') + end end it 'does not render the sidebar' do diff --git a/spec/views/shared/wikis/_sidebar.html.haml_spec.rb b/spec/views/shared/wikis/_sidebar.html.haml_spec.rb new file mode 100644 index 00000000000..3e691862937 --- /dev/null +++ b/spec/views/shared/wikis/_sidebar.html.haml_spec.rb @@ -0,0 +1,83 @@ +# frozen_string_literal: true +require 'spec_helper' + +RSpec.describe 'shared/wikis/_sidebar.html.haml' do + let_it_be(:project) { create(:project) } + let_it_be(:wiki) { Wiki.for_container(project, project.default_owner) } + + before do + assign(:wiki, wiki) + assign(:project, project) + end + + it 'includes a link to clone the repository' do + render + + expect(rendered).to have_link('Clone repository') + end + + context 'the sidebar failed to load' do + before do + assign(:sidebar_error, Object.new) + end + + it 'reports this to the user' do + render + + expect(rendered).to include('The sidebar failed to load') + expect(rendered).to have_css('.gl-alert.gl-alert-info') + end + end + + context 'The sidebar comes from a custom page' do + before do + assign(:sidebar_page, double('WikiPage', path: 'sidebar.md', slug: 'sidebar', content: 'Some sidebar content')) + end + + it 'does not show an alert' do + render + + expect(rendered).not_to include('The sidebar failed to load') + expect(rendered).not_to have_css('.gl-alert.gl-alert-info') + end + + it 'renders the wiki content' do + render + + expect(rendered).to include('Some sidebar content') + end + end + + context 'The sidebar comes a list of wiki pages' do + before do + assign(:sidebar_wiki_entries, create_list(:wiki_page, 3, wiki: wiki)) + assign(:sidebar_limited, true) + stub_template "../shared/wikis/_wiki_pages.html.erb" => "Entries: <%= @sidebar_wiki_entries.size %>" + stub_template "../shared/wikis/_wiki_page.html.erb" => 'A WIKI PAGE' + end + + it 'does not show an alert' do + render + + expect(rendered).not_to include('The sidebar failed to load') + expect(rendered).not_to have_css('.gl-alert.gl-alert-info') + end + + it 'renders the wiki content' do + render + + expect(rendered).to include('A WIKI PAGE' * 3) + expect(rendered).to have_link('View All Pages') + end + + context 'there is no more to see' do + it 'does not invite the user to view more' do + assign(:sidebar_limited, false) + + render + + expect(rendered).not_to have_link('View All Pages') + end + end + end +end |