diff options
Diffstat (limited to 'spec/views/projects')
14 files changed, 243 insertions, 85 deletions
diff --git a/spec/views/projects/_home_panel.html.haml_spec.rb b/spec/views/projects/_home_panel.html.haml_spec.rb index 6f6a2d9a04d..e5081df4c22 100644 --- a/spec/views/projects/_home_panel.html.haml_spec.rb +++ b/spec/views/projects/_home_panel.html.haml_spec.rb @@ -199,18 +199,6 @@ RSpec.describe 'projects/_home_panel' do expect(rendered).not_to have_content("Forked from #{source_project.full_name}") end - - context 'when fork_divergence_counts is disabled' do - before do - stub_feature_flags(fork_divergence_counts: false) - end - - it 'shows the forked-from project' do - render - - expect(rendered).to have_content("Forked from #{source_project.full_name}") - end - end end context 'user cannot read fork source' do @@ -223,18 +211,6 @@ RSpec.describe 'projects/_home_panel' do expect(rendered).not_to have_content("Forked from an inaccessible project") end - - context 'when fork_divergence_counts is disabled' do - before do - stub_feature_flags(fork_divergence_counts: false) - end - - it 'shows the message that forked project is inaccessible' do - render - - expect(rendered).to have_content("Forked from an inaccessible project") - end - end end end end diff --git a/spec/views/projects/commit/_commit_box.html.haml_spec.rb b/spec/views/projects/commit/_commit_box.html.haml_spec.rb index 4335a0901ae..ee76560ac3b 100644 --- a/spec/views/projects/commit/_commit_box.html.haml_spec.rb +++ b/spec/views/projects/commit/_commit_box.html.haml_spec.rb @@ -52,8 +52,7 @@ RSpec.describe 'projects/commit/_commit_box.html.haml' do context 'when pipeline for the commit is blocked' do let!(:pipeline) do - create(:ci_pipeline, :blocked, project: project, - sha: project.commit.id) + create(:ci_pipeline, :blocked, project: project, sha: project.commit.id) end it 'shows correct pipeline description' do diff --git a/spec/views/projects/commit/show.html.haml_spec.rb b/spec/views/projects/commit/show.html.haml_spec.rb index eba54628215..6d2237e773e 100644 --- a/spec/views/projects/commit/show.html.haml_spec.rb +++ b/spec/views/projects/commit/show.html.haml_spec.rb @@ -28,19 +28,6 @@ RSpec.describe 'projects/commit/show.html.haml', feature_category: :source_code_ allow(view).to receive(:pagination_params).and_return({}) end - context 'inline diff view' do - before do - allow(view).to receive(:diff_view).and_return(:inline) - allow(view).to receive(:diff_view).and_return(:inline) - - render - end - - it 'has limited width' do - expect(rendered).to have_selector('.limit-container-width') - end - end - context 'parallel diff view' do before do allow(view).to receive(:diff_view).and_return(:parallel) diff --git a/spec/views/projects/edit.html.haml_spec.rb b/spec/views/projects/edit.html.haml_spec.rb index bf154b61609..77336aa7d86 100644 --- a/spec/views/projects/edit.html.haml_spec.rb +++ b/spec/views/projects/edit.html.haml_spec.rb @@ -13,9 +13,11 @@ RSpec.describe 'projects/edit' do assign(:project, project) allow(controller).to receive(:current_user).and_return(user) - allow(view).to receive_messages(current_user: user, - can?: true, - current_application_settings: Gitlab::CurrentSettings.current_application_settings) + allow(view).to receive_messages( + current_user: user, + can?: true, + current_application_settings: Gitlab::CurrentSettings.current_application_settings + ) end context 'project export disabled' do @@ -101,4 +103,28 @@ RSpec.describe 'projects/edit' do it_behaves_like 'renders registration features prompt', :project_disabled_repository_size_limit end end + + describe 'pages menu entry callout' do + context 'with feature flag disabled' do + before do + stub_feature_flags(show_pages_in_deployments_menu: false) + end + + it 'does not show a callout' do + render + expect(rendered).not_to have_content('GitLab Pages has moved') + end + end + + context 'with feature flag enabled' do + before do + stub_feature_flags(show_pages_in_deployments_menu: true) + end + + it 'does show a callout' do + render + expect(rendered).to have_content('GitLab Pages has moved') + end + end + end end diff --git a/spec/views/projects/empty.html.haml_spec.rb b/spec/views/projects/empty.html.haml_spec.rb index 6077dda3c98..2b19b364365 100644 --- a/spec/views/projects/empty.html.haml_spec.rb +++ b/spec/views/projects/empty.html.haml_spec.rb @@ -73,9 +73,6 @@ RSpec.describe 'projects/empty' do 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_selector('.js-invite-members-trigger') - expect(rendered).to have_selector('.js-invite-members-modal') - expect(rendered).to have_selector('[data-label=invite_members_empty_project]') - expect(rendered).to have_selector('[data-event=click_button]') expect(rendered).to have_selector('[data-trigger-source=project-empty-page]') end @@ -87,7 +84,6 @@ RSpec.describe 'projects/empty' do expect(rendered).not_to have_content('Invite your team') expect(rendered).not_to have_selector('.js-invite-members-trigger') - expect(rendered).not_to have_selector('.js-invite-members-modal') end end end diff --git a/spec/views/projects/issues/_related_issues.html.haml_spec.rb b/spec/views/projects/issues/_related_issues.html.haml_spec.rb new file mode 100644 index 00000000000..0dbca032c4b --- /dev/null +++ b/spec/views/projects/issues/_related_issues.html.haml_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'projects/issues/_related_issues.html.haml', feature_category: :team_planning do + let_it_be(:project) { build_stubbed(:project) } + let_it_be(:issue) { build_stubbed(:issue, project: project) } + + context 'when current user cannot read issue link for the project' do + before do + allow(view).to receive(:can?).and_return(false) + end + + it 'does not render the related issues root node' do + render + + expect(rendered).not_to have_selector(".js-related-issues-root") + end + end + + context 'when current user can read issue link for the project' do + before do + allow(view).to receive(:can?).and_return(true) + + assign(:project, project) + assign(:issue, issue) + end + + it 'adds the report abuse path as a data attribute' do + render + + expect(rendered).to have_selector( + ".js-related-issues-root[data-report-abuse-path=\"#{add_category_abuse_reports_path}\"]" + ) + end + end +end diff --git a/spec/views/projects/merge_requests/edit.html.haml_spec.rb b/spec/views/projects/merge_requests/edit.html.haml_spec.rb index 75956160c0a..bb8a4455775 100644 --- a/spec/views/projects/merge_requests/edit.html.haml_spec.rb +++ b/spec/views/projects/merge_requests/edit.html.haml_spec.rb @@ -35,30 +35,76 @@ RSpec.describe 'projects/merge_requests/edit.html.haml' do .and_return(User.find(closed_merge_request.author_id)) end - context 'when a merge request without fork' do - it "shows editable fields" do - unlink_project.execute - closed_merge_request.reload - + shared_examples 'merge request shows editable fields' do + it 'shows editable fields' do render expect(rendered).to have_field('merge_request[title]') - expect(rendered).to have_field('merge_request[description]') - expect(rendered).to have_selector('input[name="merge_request[label_ids][]"]', visible: false) + expect(rendered).to have_selector('input[name="merge_request[description]"]', visible: false) expect(rendered).to have_selector('.js-milestone-dropdown-root') - expect(rendered).not_to have_selector('#merge_request_target_branch', visible: false) + expect(rendered).to have_selector('#merge_request_target_branch', visible: false) end end - context 'when a merge request with an existing source project is closed' do - it "shows editable fields" do - render + context 'with the visible_label_selection_on_metadata feature flag enabled' do + before do + stub_feature_flags(visible_label_selection_on_metadata: true) + end - expect(rendered).to have_field('merge_request[title]') - expect(rendered).to have_field('merge_request[description]') - expect(rendered).to have_selector('input[name="merge_request[label_ids][]"]', visible: false) - expect(rendered).to have_selector('.js-milestone-dropdown-root') - expect(rendered).to have_selector('#merge_request_target_branch', visible: false) + context 'when a merge request without fork' do + it_behaves_like 'merge request shows editable fields' + + it "shows editable fields" do + unlink_project.execute + closed_merge_request.reload + + render + + expect(rendered).not_to have_selector('#merge_request_target_branch', visible: false) + expect(rendered).to have_selector('.js-issuable-form-label-selector') + end + end + + context 'when a merge request with an existing source project is closed' do + it_behaves_like 'merge request shows editable fields' + + it "shows editable fields" do + render + + expect(rendered).to have_selector('#merge_request_target_branch', visible: false) + expect(rendered).to have_selector('.js-issuable-form-label-selector') + end + end + end + + context 'with the visible_label_selection_on_metadata feature flag disabled' do + before do + stub_feature_flags(visible_label_selection_on_metadata: false) + end + + context 'when a merge request without fork' do + it_behaves_like 'merge request shows editable fields' + + it "shows editable fields" do + unlink_project.execute + closed_merge_request.reload + + render + + expect(rendered).not_to have_selector('#merge_request_target_branch', visible: false) + expect(rendered).not_to have_selector('.js-issuable-form-label-selector') + end + end + + context 'when a merge request with an existing source project is closed' do + it_behaves_like 'merge request shows editable fields' + + it "shows editable fields" do + render + + expect(rendered).to have_selector('#merge_request_target_branch', visible: false) + expect(rendered).not_to have_selector('.js-issuable-form-label-selector') + end end end end diff --git a/spec/views/projects/packages/index.html.haml_spec.rb b/spec/views/projects/packages/index.html.haml_spec.rb new file mode 100644 index 00000000000..2557ceb70b3 --- /dev/null +++ b/spec/views/projects/packages/index.html.haml_spec.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'projects/packages/packages/index.html.haml', feature_category: :package_registry do + let_it_be(:project) { build(:project) } + + subject { rendered } + + before do + assign(:project, project) + end + + it 'renders vue entrypoint' do + render + + expect(rendered).to have_selector('#js-vue-packages-list') + end + + describe 'settings path' do + it 'without permission sets empty settings path' do + allow(view).to receive(:show_package_registry_settings).and_return(false) + + render + + expect(rendered).to have_selector('[data-settings-path=""]') + end + + it 'with permission sets project settings path' do + allow(view).to receive(:show_package_registry_settings).and_return(true) + + render + + expect(rendered).to have_selector( + "[data-settings-path=\"#{project_settings_packages_and_registries_path(project)}\"]" + ) + end + end +end diff --git a/spec/views/projects/pipeline_schedules/_pipeline_schedule.html.haml_spec.rb b/spec/views/projects/pipeline_schedules/_pipeline_schedule.html.haml_spec.rb index 37c9908af1d..13ec7207ec9 100644 --- a/spec/views/projects/pipeline_schedules/_pipeline_schedule.html.haml_spec.rb +++ b/spec/views/projects/pipeline_schedules/_pipeline_schedule.html.haml_spec.rb @@ -22,7 +22,7 @@ RSpec.describe 'projects/pipeline_schedules/_pipeline_schedule' do let(:user) { maintainer } before do - allow(view).to receive(:can?).with(maintainer, :take_ownership_pipeline_schedule, pipeline_schedule).and_return(true) + allow(view).to receive(:can?).with(maintainer, :admin_pipeline_schedule, pipeline_schedule).and_return(true) end it 'non-owner can take ownership of pipeline' do @@ -36,7 +36,7 @@ RSpec.describe 'projects/pipeline_schedules/_pipeline_schedule' do let(:user) { owner } before do - allow(view).to receive(:can?).with(owner, :take_ownership_pipeline_schedule, pipeline_schedule).and_return(false) + allow(view).to receive(:can?).with(owner, :admin_pipeline_schedule, pipeline_schedule).and_return(false) end it 'owner cannot take ownership of pipeline' do diff --git a/spec/views/projects/pipelines/show.html.haml_spec.rb b/spec/views/projects/pipelines/show.html.haml_spec.rb index b9c7da20d1a..81a11874886 100644 --- a/spec/views/projects/pipelines/show.html.haml_spec.rb +++ b/spec/views/projects/pipelines/show.html.haml_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'projects/pipelines/show', feature_category: :pipeline_authoring do +RSpec.describe 'projects/pipelines/show', feature_category: :pipeline_composition do include Devise::Test::ControllerHelpers let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:user) } @@ -13,6 +13,7 @@ RSpec.describe 'projects/pipelines/show', feature_category: :pipeline_authoring before do assign(:project, project) assign(:pipeline, presented_pipeline) + allow(view).to receive(:current_user) { user } end context 'when pipeline has errors' do @@ -32,6 +33,22 @@ RSpec.describe 'projects/pipelines/show', feature_category: :pipeline_authoring expect(rendered).not_to have_selector('#js-pipeline-tabs') end + + it 'renders the pipeline editor button with correct link for users who can view' do + project.add_developer(user) + + render + + expect(rendered).to have_link s_('Go to the pipeline editor'), + href: project_ci_pipeline_editor_path(project) + end + + it 'renders the pipeline editor button with correct link for users who can not view' do + render + + expect(rendered).not_to have_link s_('Go to the pipeline editor'), + href: project_ci_pipeline_editor_path(project) + end end context 'when pipeline is valid' do diff --git a/spec/views/projects/project_members/index.html.haml_spec.rb b/spec/views/projects/project_members/index.html.haml_spec.rb index 4c4cde01cca..2fcc5c6935b 100644 --- a/spec/views/projects/project_members/index.html.haml_spec.rb +++ b/spec/views/projects/project_members/index.html.haml_spec.rb @@ -28,7 +28,6 @@ RSpec.describe 'projects/project_members/index', :aggregate_failures, feature_ca expect(rendered).to have_selector('.js-invite-group-trigger') expect(rendered).to have_selector('.js-invite-members-trigger') expect(rendered).not_to have_content('Members can be added by project') - expect(response).to render_template(partial: 'projects/_invite_members_modal') end context 'when project is not allowed to share with group' do diff --git a/spec/views/projects/runners/_project_runners.html.haml_spec.rb b/spec/views/projects/runners/_project_runners.html.haml_spec.rb index 8a7e693bdeb..d96b77b368c 100644 --- a/spec/views/projects/runners/_project_runners.html.haml_spec.rb +++ b/spec/views/projects/runners/_project_runners.html.haml_spec.rb @@ -15,30 +15,66 @@ RSpec.describe 'projects/runners/_project_runners.html.haml', feature_category: allow(view).to receive(:reset_registration_token_namespace_project_settings_ci_cd_path).and_return('banana_url') end - context 'when project runner registration is allowed' do + context 'when create_runner_workflow_for_namespace is disabled' do before do - stub_application_setting(valid_runner_registrars: ['project']) - allow(view).to receive(:can?).with(user, :register_project_runners, project).and_return(true) + stub_feature_flags(create_runner_workflow_for_namespace: false) end - it 'enables the Remove project button for a project' do - render 'projects/runners/project_runners', project: project + context 'when project runner registration is allowed' do + before do + stub_application_setting(valid_runner_registrars: ['project']) + allow(view).to receive(:can?).with(user, :register_project_runners, project).and_return(true) + end - expect(rendered).to have_selector '#js-install-runner' - expect(rendered).not_to have_content 'Please contact an admin to register runners.' + it 'enables the Remove project button for a project' do + render 'projects/runners/project_runners', project: project + + expect(rendered).to have_selector '#js-install-runner' + expect(rendered).not_to have_content 'Please contact an admin to register runners.' + end + end + + context 'when project runner registration is not allowed' do + before do + stub_application_setting(valid_runner_registrars: ['group']) + end + + it 'does not enable the Remove project button for a project' do + render 'projects/runners/project_runners', project: project + + expect(rendered).to have_content 'Please contact an admin to register runners.' + expect(rendered).not_to have_selector '#js-install-runner' + end end end - context 'when project runner registration is not allowed' do + context 'when create_runner_workflow_for_namespace is enabled' do before do - stub_application_setting(valid_runner_registrars: ['group']) + stub_feature_flags(create_runner_workflow_for_namespace: project.namespace) end - it 'does not enable the Remove project button for a project' do - render 'projects/runners/project_runners', project: project + context 'when user can create project runner' do + before do + allow(view).to receive(:can?).with(user, :create_runner, project).and_return(true) + end + + it 'renders the New project runner button' do + render 'projects/runners/project_runners', project: project + + expect(rendered).to have_link(s_('Runners|New project runner'), href: new_project_runner_path(project)) + end + end + + context 'when user cannot create project runner' do + before do + allow(view).to receive(:can?).with(user, :create_runner, project).and_return(false) + end + + it 'does not render the New project runner button' do + render 'projects/runners/project_runners', project: project - expect(rendered).to have_content 'Please contact an admin to register runners.' - expect(rendered).not_to have_selector '#js-install-runner' + expect(rendered).not_to have_link(s_('Runners|New project runner')) + end end end end diff --git a/spec/views/projects/settings/merge_requests/show.html.haml_spec.rb b/spec/views/projects/settings/merge_requests/show.html.haml_spec.rb index 821f430eb10..1a7bfc5b5cd 100644 --- a/spec/views/projects/settings/merge_requests/show.html.haml_spec.rb +++ b/spec/views/projects/settings/merge_requests/show.html.haml_spec.rb @@ -13,9 +13,11 @@ RSpec.describe 'projects/settings/merge_requests/show' do assign(:project, project) allow(controller).to receive(:current_user).and_return(user) - allow(view).to receive_messages(current_user: user, - can?: true, - current_application_settings: Gitlab::CurrentSettings.current_application_settings) + allow(view).to receive_messages( + current_user: user, + can?: true, + current_application_settings: Gitlab::CurrentSettings.current_application_settings + ) end describe 'merge suggestions settings' do diff --git a/spec/views/projects/tags/index.html.haml_spec.rb b/spec/views/projects/tags/index.html.haml_spec.rb index 99db5d9e2a8..dfa27afb72f 100644 --- a/spec/views/projects/tags/index.html.haml_spec.rb +++ b/spec/views/projects/tags/index.html.haml_spec.rb @@ -6,9 +6,7 @@ RSpec.describe 'projects/tags/index.html.haml' do let_it_be(:project) { create(:project, :repository) } let_it_be(:git_tag) { project.repository.tags.last } let_it_be(:release) do - create(:release, project: project, - sha: git_tag.target_commit.sha, - tag: 'v1.1.0') + create(:release, project: project, sha: git_tag.target_commit.sha, tag: 'v1.1.0') end let(:pipeline) { create(:ci_pipeline, :success, project: project, ref: git_tag.name, sha: release.sha) } |
