Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-05-20 17:34:42 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-05-20 17:34:42 +0300
commit9f46488805e86b1bc341ea1620b866016c2ce5ed (patch)
treef9748c7e287041e37d6da49e0a29c9511dc34768 /spec/helpers
parentdfc92d081ea0332d69c8aca2f0e745cb48ae5e6d (diff)
Add latest changes from gitlab-org/gitlab@13-0-stable-ee
Diffstat (limited to 'spec/helpers')
-rw-r--r--spec/helpers/access_tokens_helper_spec.rb18
-rw-r--r--spec/helpers/application_helper_spec.rb27
-rw-r--r--spec/helpers/auth_helper_spec.rb36
-rw-r--r--spec/helpers/boards_helper_spec.rb4
-rw-r--r--spec/helpers/clusters_helper_spec.rb26
-rw-r--r--spec/helpers/commits_helper_spec.rb28
-rw-r--r--spec/helpers/environments_helper_spec.rb18
-rw-r--r--spec/helpers/events_helper_spec.rb14
-rw-r--r--spec/helpers/export_helper_spec.rb11
-rw-r--r--spec/helpers/groups_helper_spec.rb27
-rw-r--r--spec/helpers/issuables_helper_spec.rb42
-rw-r--r--spec/helpers/markup_helper_spec.rb39
-rw-r--r--spec/helpers/members_helper_spec.rb11
-rw-r--r--spec/helpers/milestones_helper_spec.rb15
-rw-r--r--spec/helpers/nav_helper_spec.rb23
-rw-r--r--spec/helpers/preferences_helper_spec.rb2
-rw-r--r--spec/helpers/projects/alert_management_helper_spec.rb82
-rw-r--r--spec/helpers/projects_helper_spec.rb42
-rw-r--r--spec/helpers/releases_helper_spec.rb4
-rw-r--r--spec/helpers/search_helper_spec.rb1
-rw-r--r--spec/helpers/snippets_helper_spec.rb31
-rw-r--r--spec/helpers/todos_helper_spec.rb71
-rw-r--r--spec/helpers/visibility_level_helper_spec.rb26
-rw-r--r--spec/helpers/x509_helper_spec.rb18
24 files changed, 479 insertions, 137 deletions
diff --git a/spec/helpers/access_tokens_helper_spec.rb b/spec/helpers/access_tokens_helper_spec.rb
new file mode 100644
index 00000000000..1d246d3f236
--- /dev/null
+++ b/spec/helpers/access_tokens_helper_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require "spec_helper"
+
+describe AccessTokensHelper do
+ describe "#scope_description" do
+ using RSpec::Parameterized::TableSyntax
+
+ where(:prefix, :description_location) do
+ :personal_access_token | [:doorkeeper, :scope_desc]
+ :project_access_token | [:doorkeeper, :project_access_token_scope_desc]
+ end
+
+ with_them do
+ it { expect(helper.scope_description(prefix)).to eq(description_location) }
+ end
+ end
+end
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index a96046735c8..05231cc6d09 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -71,6 +71,28 @@ describe ApplicationHelper do
end
end
+ describe '#admin_section?' do
+ context 'when controller is under the admin namespace' do
+ before do
+ allow(helper).to receive(:controller).and_return(Admin::UsersController.new)
+ end
+
+ it 'returns true' do
+ expect(helper.admin_section?).to eq(true)
+ end
+ end
+
+ context 'when controller is not under the admin namespace' do
+ before do
+ allow(helper).to receive(:controller).and_return(UsersController.new)
+ end
+
+ it 'returns true' do
+ expect(helper.admin_section?).to eq(false)
+ end
+ end
+ end
+
describe 'simple_sanitize' do
let(:a_tag) { '<a href="#">Foo</a>' }
@@ -90,8 +112,11 @@ describe ApplicationHelper do
end
describe 'time_ago_with_tooltip' do
+ around do |example|
+ Time.use_zone('UTC') { example.run }
+ end
+
def element(*arguments)
- Time.zone = 'UTC'
@time = Time.zone.parse('2015-07-02 08:23')
element = helper.time_ago_with_tooltip(@time, *arguments)
diff --git a/spec/helpers/auth_helper_spec.rb b/spec/helpers/auth_helper_spec.rb
index 1764a2bbc3c..23f3449d9a7 100644
--- a/spec/helpers/auth_helper_spec.rb
+++ b/spec/helpers/auth_helper_spec.rb
@@ -184,4 +184,40 @@ describe AuthHelper do
end
end
end
+
+ describe '#allow_admin_mode_password_authentication_for_web?' do
+ let(:user) { create(:user) }
+
+ subject { helper.allow_admin_mode_password_authentication_for_web? }
+
+ before do
+ allow(helper).to receive(:current_user).and_return(user)
+ end
+
+ it { is_expected.to be(true) }
+
+ context 'when password authentication for web is disabled' do
+ before do
+ stub_application_setting(password_authentication_enabled_for_web: false)
+ end
+
+ it { is_expected.to be(false) }
+ end
+
+ context 'when current_user is an ldap user' do
+ before do
+ allow(user).to receive(:ldap_user?).and_return(true)
+ end
+
+ it { is_expected.to be(false) }
+ end
+
+ context 'when user got password automatically set' do
+ before do
+ user.update_attribute(:password_automatically_set, true)
+ end
+
+ it { is_expected.to be(false) }
+ end
+ end
end
diff --git a/spec/helpers/boards_helper_spec.rb b/spec/helpers/boards_helper_spec.rb
index f5e5285554c..cb9be9d5fb4 100644
--- a/spec/helpers/boards_helper_spec.rb
+++ b/spec/helpers/boards_helper_spec.rb
@@ -48,6 +48,10 @@ describe BoardsHelper do
it 'returns a board_lists_path as lists_endpoint' do
expect(helper.board_data[:lists_endpoint]).to eq(board_lists_path(board))
end
+
+ it 'returns board type as parent' do
+ expect(helper.board_data[:parent]).to eq('project')
+ end
end
describe '#current_board_json' do
diff --git a/spec/helpers/clusters_helper_spec.rb b/spec/helpers/clusters_helper_spec.rb
index eec62bbb990..d40ed2248ce 100644
--- a/spec/helpers/clusters_helper_spec.rb
+++ b/spec/helpers/clusters_helper_spec.rb
@@ -59,6 +59,32 @@ describe ClustersHelper do
end
end
+ describe '#provider_icon' do
+ it 'will return GCP logo with gcp argument' do
+ logo = helper.provider_icon('gcp')
+
+ expect(logo).to match(%r(img alt="Google GKE" data-src="|/illustrations/logos/google_gke|svg))
+ end
+
+ it 'will return AWS logo with aws argument' do
+ logo = helper.provider_icon('aws')
+
+ expect(logo).to match(%r(img alt="Amazon EKS" data-src="|/illustrations/logos/amazon_eks|svg))
+ end
+
+ it 'will return default logo with unknown provider' do
+ logo = helper.provider_icon('unknown')
+
+ expect(logo).to match(%r(img alt="Kubernetes Cluster" data-src="|/illustrations/logos/kubernetes|svg))
+ end
+
+ it 'will return default logo when provider is empty' do
+ logo = helper.provider_icon
+
+ expect(logo).to match(%r(img alt="Kubernetes Cluster" data-src="|/illustrations/logos/kubernetes|svg))
+ end
+ end
+
describe '#cluster_type_label' do
subject { helper.cluster_type_label(cluster_type) }
diff --git a/spec/helpers/commits_helper_spec.rb b/spec/helpers/commits_helper_spec.rb
index dd268c2411f..e036e97f745 100644
--- a/spec/helpers/commits_helper_spec.rb
+++ b/spec/helpers/commits_helper_spec.rb
@@ -82,4 +82,32 @@ describe CommitsHelper do
expect(helper.commit_to_html(commit, ref, project)).to include('<div class="commit-content')
end
end
+
+ describe 'commit_path' do
+ it 'returns a persisted merge request commit path' do
+ project = create(:project, :repository)
+ persisted_merge_request = create(:merge_request, source_project: project, target_project: project)
+ commit = project.repository.commit
+
+ expect(helper.commit_path(persisted_merge_request.project, commit, merge_request: persisted_merge_request))
+ .to eq(diffs_project_merge_request_path(project, persisted_merge_request, commit_id: commit.id))
+ end
+
+ it 'returns a non-persisted merge request commit path which commits still reside in the source project' do
+ source_project = create(:project, :repository)
+ target_project = create(:project, :repository)
+ non_persisted_merge_request = build(:merge_request, source_project: source_project, target_project: target_project)
+ commit = source_project.repository.commit
+
+ expect(helper.commit_path(non_persisted_merge_request.project, commit, merge_request: non_persisted_merge_request))
+ .to eq(project_commit_path(source_project, commit))
+ end
+
+ it 'returns a project commit path' do
+ project = create(:project, :repository)
+ commit = project.repository.commit
+
+ expect(helper.commit_path(project, commit)).to eq(project_commit_path(project, commit))
+ end
+ end
end
diff --git a/spec/helpers/environments_helper_spec.rb b/spec/helpers/environments_helper_spec.rb
index 152e9c84ec5..0756e0162a5 100644
--- a/spec/helpers/environments_helper_spec.rb
+++ b/spec/helpers/environments_helper_spec.rb
@@ -37,10 +37,26 @@ describe EnvironmentsHelper do
'environment-state' => environment.state,
'custom-metrics-path' => project_prometheus_metrics_path(project),
'validate-query-path' => validate_query_project_prometheus_metrics_path(project),
- 'custom-metrics-available' => 'true'
+ 'custom-metrics-available' => 'true',
+ 'alerts-endpoint' => project_prometheus_alerts_path(project, environment_id: environment.id, format: :json),
+ 'prometheus-alerts-available' => 'true'
)
end
+ context 'without read_prometheus_alerts permission' do
+ before do
+ allow(helper).to receive(:can?)
+ .with(user, :read_prometheus_alerts, project)
+ .and_return(false)
+ end
+
+ it 'returns false' do
+ expect(metrics_data).to include(
+ 'prometheus-alerts-available' => 'false'
+ )
+ end
+ end
+
context 'with metrics_setting' do
before do
create(:project_metrics_setting, project: project, external_dashboard_url: 'http://gitlab.com')
diff --git a/spec/helpers/events_helper_spec.rb b/spec/helpers/events_helper_spec.rb
index ff99f76eb4d..12519390137 100644
--- a/spec/helpers/events_helper_spec.rb
+++ b/spec/helpers/events_helper_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
describe EventsHelper do
+ include Gitlab::Routing
+
describe '#event_commit_title' do
let(:message) { 'foo & bar ' + 'A' * 70 + '\n' + 'B' * 80 }
@@ -197,5 +199,17 @@ describe EventsHelper do
expect(subject).to eq("#{project_base_url}/-/merge_requests/#{event.note_target.iid}#note_#{event.target.id}")
end
+
+ context 'for design note events' do
+ let(:event) { create(:event, :for_design, project: project) }
+
+ it 'returns an appropriate URL' do
+ iid = event.note_target.issue.iid
+ filename = event.note_target.filename
+ note_id = event.target.id
+
+ expect(subject).to eq("#{project_base_url}/-/issues/#{iid}/designs/#{filename}#note_#{note_id}")
+ end
+ end
end
end
diff --git a/spec/helpers/export_helper_spec.rb b/spec/helpers/export_helper_spec.rb
new file mode 100644
index 00000000000..3fbda441b5d
--- /dev/null
+++ b/spec/helpers/export_helper_spec.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe ExportHelper do
+ describe '#project_export_descriptions' do
+ it 'includes design management' do
+ expect(project_export_descriptions).to include('Design Management files and data')
+ end
+ end
+end
diff --git a/spec/helpers/groups_helper_spec.rb b/spec/helpers/groups_helper_spec.rb
index ac2f028f937..5be247c5b49 100644
--- a/spec/helpers/groups_helper_spec.rb
+++ b/spec/helpers/groups_helper_spec.rb
@@ -340,4 +340,31 @@ describe GroupsHelper do
end
end
end
+
+ describe '#can_update_default_branch_protection?' do
+ let(:current_user) { create(:user) }
+ let(:group) { create(:group) }
+
+ subject { helper.can_update_default_branch_protection?(group) }
+
+ before do
+ allow(helper).to receive(:current_user) { current_user }
+ end
+
+ context 'for users who can update default branch protection of the group' do
+ before do
+ allow(helper).to receive(:can?).with(current_user, :update_default_branch_protection, group) { true }
+ end
+
+ it { is_expected.to be_truthy }
+ end
+
+ context 'for users who cannot update default branch protection of the group' do
+ before do
+ allow(helper).to receive(:can?).with(current_user, :update_default_branch_protection, group) { false }
+ end
+
+ it { is_expected.to be_falsey }
+ end
+ end
end
diff --git a/spec/helpers/issuables_helper_spec.rb b/spec/helpers/issuables_helper_spec.rb
index 7eb5d2fc08c..38ad11846d2 100644
--- a/spec/helpers/issuables_helper_spec.rb
+++ b/spec/helpers/issuables_helper_spec.rb
@@ -303,46 +303,4 @@ describe IssuablesHelper do
end
end
end
-
- describe '#gitlab_team_member_badge' do
- let(:issue) { build(:issue, author: user) }
-
- before do
- allow(Gitlab).to receive(:com?).and_return(true)
- end
-
- context 'when `:gitlab_employee_badge` feature flag is disabled' do
- let(:user) { build(:user, email: 'test@gitlab.com') }
-
- before do
- stub_feature_flags(gitlab_employee_badge: false)
- end
-
- it 'returns nil' do
- expect(helper.gitlab_team_member_badge(issue.author)).to be_nil
- end
- end
-
- context 'when issue author is not a GitLab team member' do
- let(:user) { build(:user, email: 'test@example.com') }
-
- it 'returns nil' do
- expect(helper.gitlab_team_member_badge(issue.author)).to be_nil
- end
- end
-
- context 'when issue author is a GitLab team member' do
- let(:user) { build(:user, email: 'test@gitlab.com') }
-
- it 'returns span with svg icon' do
- expect(helper.gitlab_team_member_badge(issue.author)).to have_selector('span > svg')
- end
-
- context 'when `css_class` parameter is passed' do
- it 'adds CSS classes' do
- expect(helper.gitlab_team_member_badge(issue.author, css_class: 'foo bar baz')).to have_selector('span.foo.bar.baz')
- end
- end
- end
- end
end
diff --git a/spec/helpers/markup_helper_spec.rb b/spec/helpers/markup_helper_spec.rb
index 33347f20de8..b2df543d651 100644
--- a/spec/helpers/markup_helper_spec.rb
+++ b/spec/helpers/markup_helper_spec.rb
@@ -95,12 +95,13 @@ describe MarkupHelper do
context 'when text contains a relative link to an image in the repository' do
let(:image_file) { "logo-white.png" }
let(:text_with_relative_path) { "![](./#{image_file})\n" }
- let(:generated_html) { helper.markdown(text_with_relative_path, requested_path: requested_path) }
+ let(:generated_html) { helper.markdown(text_with_relative_path, requested_path: requested_path, ref: ref) }
subject { Nokogiri::HTML.parse(generated_html) }
- context 'when requested_path is provided in the context' do
+ context 'when requested_path is provided, but ref isn\'t' do
let(:requested_path) { 'files/images/README.md' }
+ let(:ref) { nil }
it 'returns the correct HTML for the image' do
expanded_path = "/#{project.full_path}/-/raw/master/files/images/#{image_file}"
@@ -110,13 +111,43 @@ describe MarkupHelper do
end
end
- context 'when requested_path parameter is not provided' do
+ context 'when requested_path and ref parameters are both provided' do
+ let(:requested_path) { 'files/images/README.md' }
+ let(:ref) { 'other_branch' }
+
+ it 'returns the correct HTML for the image' do
+ project.repository.create_branch('other_branch')
+
+ expanded_path = "/#{project.full_path}/-/raw/#{ref}/files/images/#{image_file}"
+
+ expect(subject.css('a')[0].attr('href')).to eq(expanded_path)
+ expect(subject.css('img')[0].attr('data-src')).to eq(expanded_path)
+ end
+ end
+
+ context 'when ref is provided, but requested_path isn\'t' do
+ let(:ref) { 'other_branch' }
+ let(:requested_path) { nil }
+
+ it 'returns the correct HTML for the image' do
+ project.repository.create_branch('other_branch')
+
+ expanded_path = "/#{project.full_path}/-/blob/#{ref}/./#{image_file}"
+
+ expect(subject.css('a')[0].attr('href')).to eq(expanded_path)
+ expect(subject.css('img')[0].attr('data-src')).to eq(expanded_path)
+ end
+ end
+
+ context 'when neither requested_path, nor ref parameter is provided' do
+ let(:ref) { nil }
let(:requested_path) { nil }
- it 'returns the link to the image path as a relative path' do
+ it 'returns the correct HTML for the image' do
expanded_path = "/#{project.full_path}/-/blob/master/./#{image_file}"
expect(subject.css('a')[0].attr('href')).to eq(expanded_path)
+ expect(subject.css('img')[0].attr('data-src')).to eq(expanded_path)
end
end
end
diff --git a/spec/helpers/members_helper_spec.rb b/spec/helpers/members_helper_spec.rb
index 169c8707bf4..946ffcddae7 100644
--- a/spec/helpers/members_helper_spec.rb
+++ b/spec/helpers/members_helper_spec.rb
@@ -22,6 +22,17 @@ describe MembersHelper do
it { expect(remove_member_message(group_member_invite)).to eq "Are you sure you want to revoke the invitation for #{group_member_invite.invite_email} to join the #{group.name} group?" }
it { expect(remove_member_message(group_member_request)).to eq "Are you sure you want to deny #{requester.name}'s request to join the #{group.name} group?" }
it { expect(remove_member_message(group_member_request, user: requester)).to eq "Are you sure you want to withdraw your access request for the #{group.name} group?" }
+
+ context 'an accepted user invitation with no user associated' do
+ before do
+ group_member_invite.update(invite_email: "#{SecureRandom.hex}@example.com", invite_token: nil, user_id: nil)
+ end
+
+ it 'logs an exception and shows orphaned status' do
+ expect(Gitlab::ErrorTracking).to receive(:track_exception).with(anything, hash_including(:member_id, :invite_email, :invite_accepted_at))
+ expect(remove_member_message(group_member_invite)).to eq "Are you sure you want to remove this orphaned member from the #{group.name} group and any subresources?"
+ end
+ end
end
describe '#remove_member_title' do
diff --git a/spec/helpers/milestones_helper_spec.rb b/spec/helpers/milestones_helper_spec.rb
index 3574066e03e..4ce7143bdf0 100644
--- a/spec/helpers/milestones_helper_spec.rb
+++ b/spec/helpers/milestones_helper_spec.rb
@@ -85,4 +85,19 @@ describe MilestonesHelper do
end
end
end
+
+ describe "#group_milestone_route" do
+ let(:group) { build_stubbed(:group) }
+ let(:subgroup) { build_stubbed(:group, parent: group, name: "Test Subgrp") }
+
+ context "when in subgroup" do
+ let(:milestone) { build_stubbed(:group_milestone, group: subgroup) }
+
+ it 'generates correct url despite assigned @group' do
+ assign(:group, group)
+ milestone_path = "/groups/#{subgroup.full_path}/-/milestones/#{milestone.iid}"
+ expect(helper.group_milestone_route(milestone)).to eq(milestone_path)
+ end
+ end
+ end
end
diff --git a/spec/helpers/nav_helper_spec.rb b/spec/helpers/nav_helper_spec.rb
index f92dca11136..ac1c6c62433 100644
--- a/spec/helpers/nav_helper_spec.rb
+++ b/spec/helpers/nav_helper_spec.rb
@@ -117,4 +117,27 @@ describe NavHelper, :do_not_mock_admin_mode do
it { is_expected.to all(be_a(String)) }
end
+
+ describe '#page_has_markdown?' do
+ using RSpec::Parameterized::TableSyntax
+
+ where path: %w(
+ merge_requests#show
+ projects/merge_requests/conflicts#show
+ issues#show
+ milestones#show
+ issues#designs
+ )
+
+ with_them do
+ before do
+ allow(helper).to receive(:current_path?).and_call_original
+ allow(helper).to receive(:current_path?).with(path).and_return(true)
+ end
+
+ subject { helper.page_has_markdown? }
+
+ it { is_expected.to eq(true) }
+ end
+ end
end
diff --git a/spec/helpers/preferences_helper_spec.rb b/spec/helpers/preferences_helper_spec.rb
index c4ed99e56a0..7969cfd97b5 100644
--- a/spec/helpers/preferences_helper_spec.rb
+++ b/spec/helpers/preferences_helper_spec.rb
@@ -123,7 +123,7 @@ describe PreferencesHelper do
describe '#language_choices' do
it 'returns an array of all available languages' do
expect(helper.language_choices).to be_an(Array)
- expect(helper.language_choices.map(&:second)).to eq(Gitlab::I18n.available_locales)
+ expect(helper.language_choices.map(&:first)).to eq(Gitlab::I18n::AVAILABLE_LANGUAGES.values.sort)
end
end
diff --git a/spec/helpers/projects/alert_management_helper_spec.rb b/spec/helpers/projects/alert_management_helper_spec.rb
new file mode 100644
index 00000000000..078759de39c
--- /dev/null
+++ b/spec/helpers/projects/alert_management_helper_spec.rb
@@ -0,0 +1,82 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Projects::AlertManagementHelper do
+ include Gitlab::Routing.url_helpers
+
+ let_it_be(:project, reload: true) { create(:project) }
+ let_it_be(:current_user) { create(:user) }
+ let_it_be(:project_path) { project.full_path }
+
+ describe '#alert_management_data' do
+ let(:user_can_enable_alert_management) { true }
+ let(:setting_path) { edit_project_service_path(project, AlertsService) }
+
+ subject(:data) { helper.alert_management_data(current_user, project) }
+
+ before do
+ allow(helper)
+ .to receive(:can?)
+ .with(current_user, :admin_project, project)
+ .and_return(user_can_enable_alert_management)
+ end
+
+ context 'without alert_managements_setting' do
+ it 'returns index page configuration' do
+ expect(helper.alert_management_data(current_user, project)).to match(
+ 'project-path' => project_path,
+ 'enable-alert-management-path' => setting_path,
+ 'empty-alert-svg-path' => match_asset_path('/assets/illustrations/alert-management-empty-state.svg'),
+ 'user-can-enable-alert-management' => 'true',
+ 'alert-management-enabled' => 'false'
+ )
+ end
+ end
+
+ context 'with alerts service' do
+ let_it_be(:alerts_service) { create(:alerts_service, project: project) }
+
+ context 'when alerts service is active' do
+ it 'enables alert management' do
+ expect(data).to include(
+ 'alert-management-enabled' => 'true'
+ )
+ end
+ end
+
+ context 'when alerts service is inactive' do
+ it 'disables alert management' do
+ alerts_service.update(active: false)
+
+ expect(data).to include(
+ 'alert-management-enabled' => 'false'
+ )
+ end
+ end
+ end
+
+ context 'when user does not have requisite enablement permissions' do
+ let(:user_can_enable_alert_management) { false }
+
+ it 'shows error tracking enablement as disabled' do
+ expect(helper.alert_management_data(current_user, project)).to include(
+ 'user-can-enable-alert-management' => 'false'
+ )
+ end
+ end
+ end
+
+ describe '#alert_management_detail_data' do
+ let(:alert_id) { 1 }
+ let(:new_issue_path) { new_project_issue_path(project) }
+
+ it 'returns detail page configuration' do
+ expect(helper.alert_management_detail_data(project, alert_id)).to eq(
+ 'alert-id' => alert_id,
+ 'project-path' => project_path,
+ 'new-issue-path' => new_issue_path
+ )
+ end
+ end
+end
diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb
index 17e3f8f9c06..189ab1a8354 100644
--- a/spec/helpers/projects_helper_spec.rb
+++ b/spec/helpers/projects_helper_spec.rb
@@ -719,11 +719,7 @@ describe ProjectsHelper do
end
describe '#show_merge_request_count' do
- context 'when the feature flag is enabled' do
- before do
- stub_feature_flags(project_list_show_mr_count: true)
- end
-
+ context 'enabled flag' do
it 'returns true if compact mode is disabled' do
expect(helper.show_merge_request_count?).to be_truthy
end
@@ -733,22 +729,7 @@ describe ProjectsHelper do
end
end
- context 'when the feature flag is disabled' do
- before do
- stub_feature_flags(project_list_show_mr_count: false)
- end
-
- it 'always returns false' do
- expect(helper.show_merge_request_count?(disabled: false)).to be_falsy
- expect(helper.show_merge_request_count?(disabled: true)).to be_falsy
- end
- end
-
context 'disabled flag' do
- before do
- stub_feature_flags(project_list_show_mr_count: true)
- end
-
it 'returns false if disabled flag is true' do
expect(helper.show_merge_request_count?(disabled: true)).to be_falsey
end
@@ -760,11 +741,7 @@ describe ProjectsHelper do
end
describe '#show_issue_count?' do
- context 'when the feature flag is enabled' do
- before do
- stub_feature_flags(project_list_show_issue_count: true)
- end
-
+ context 'enabled flag' do
it 'returns true if compact mode is disabled' do
expect(helper.show_issue_count?).to be_truthy
end
@@ -774,22 +751,7 @@ describe ProjectsHelper do
end
end
- context 'when the feature flag is disabled' do
- before do
- stub_feature_flags(project_list_show_issue_count: false)
- end
-
- it 'always returns false' do
- expect(helper.show_issue_count?(disabled: false)).to be_falsy
- expect(helper.show_issue_count?(disabled: true)).to be_falsy
- end
- end
-
context 'disabled flag' do
- before do
- stub_feature_flags(project_list_show_issue_count: true)
- end
-
it 'returns false if disabled flag is true' do
expect(helper.show_issue_count?(disabled: true)).to be_falsey
end
diff --git a/spec/helpers/releases_helper_spec.rb b/spec/helpers/releases_helper_spec.rb
index 282758679cb..de4086e48db 100644
--- a/spec/helpers/releases_helper_spec.rb
+++ b/spec/helpers/releases_helper_spec.rb
@@ -54,7 +54,9 @@ describe ReleasesHelper do
markdown_docs_path
releases_page_path
update_release_api_docs_path
- release_assets_docs_path)
+ release_assets_docs_path
+ manage_milestones_path
+ new_milestone_path)
expect(helper.data_for_edit_release_page.keys).to eq(keys)
end
end
diff --git a/spec/helpers/search_helper_spec.rb b/spec/helpers/search_helper_spec.rb
index 18c94602596..6a06b012c6c 100644
--- a/spec/helpers/search_helper_spec.rb
+++ b/spec/helpers/search_helper_spec.rb
@@ -112,7 +112,6 @@ describe SearchHelper do
'milestones' | 'milestone'
'notes' | 'comment'
'projects' | 'project'
- 'snippet_blobs' | 'snippet result'
'snippet_titles' | 'snippet'
'users' | 'user'
'wiki_blobs' | 'wiki result'
diff --git a/spec/helpers/snippets_helper_spec.rb b/spec/helpers/snippets_helper_spec.rb
index b5b431b5818..6fdf4f5cfb4 100644
--- a/spec/helpers/snippets_helper_spec.rb
+++ b/spec/helpers/snippets_helper_spec.rb
@@ -151,35 +151,4 @@ describe SnippetsHelper do
"<input type=\"text\" readonly=\"readonly\" class=\"js-snippet-url-area snippet-embed-input form-control\" data-url=\"#{url}\" value=\"<script src=&quot;#{url}.js&quot;></script>\" autocomplete=\"off\"></input>"
end
end
-
- describe '#snippet_file_name' do
- subject { helper.snippet_file_name(snippet) }
-
- where(:snippet_type, :flag_enabled, :trait, :filename) do
- [
- [:personal_snippet, false, nil, 'foo.txt'],
- [:personal_snippet, true, nil, 'foo.txt'],
- [:personal_snippet, false, :repository, 'foo.txt'],
- [:personal_snippet, true, :repository, '.gitattributes'],
-
- [:project_snippet, false, nil, 'foo.txt'],
- [:project_snippet, true, nil, 'foo.txt'],
- [:project_snippet, false, :repository, 'foo.txt'],
- [:project_snippet, true, :repository, '.gitattributes']
- ]
- end
-
- with_them do
- let(:snippet) { create(snippet_type, trait, file_name: 'foo.txt') }
-
- before do
- allow(helper).to receive(:current_user).and_return(snippet.author)
- stub_feature_flags(version_snippets: flag_enabled)
- end
-
- it 'returns the correct filename' do
- expect(subject).to eq filename
- end
- end
- end
end
diff --git a/spec/helpers/todos_helper_spec.rb b/spec/helpers/todos_helper_spec.rb
index 7c73b990338..b09e1e2b83b 100644
--- a/spec/helpers/todos_helper_spec.rb
+++ b/spec/helpers/todos_helper_spec.rb
@@ -1,8 +1,26 @@
# frozen_string_literal: true
-require "spec_helper"
+require 'spec_helper'
describe TodosHelper do
+ let_it_be(:user) { create(:user) }
+ let_it_be(:author) { create(:user) }
+ let_it_be(:issue) { create(:issue) }
+ let_it_be(:design) { create(:design, issue: issue) }
+ let_it_be(:note) do
+ create(:note,
+ project: issue.project,
+ note: 'I am note, hear me roar')
+ end
+ let_it_be(:design_todo) do
+ create(:todo, :mentioned,
+ user: user,
+ project: issue.project,
+ target: design,
+ author: author,
+ note: note)
+ end
+
describe '#todos_count_format' do
it 'shows fuzzy count for 100 or more items' do
expect(helper.todos_count_format(100)).to eq '99+'
@@ -32,7 +50,56 @@ describe TodosHelper do
{ 'id' => projects.first.id, 'text' => projects.first.full_name }
]
- expect(JSON.parse(helper.todo_projects_options)).to match_array(expected_results)
+ expect(Gitlab::Json.parse(helper.todo_projects_options)).to match_array(expected_results)
+ end
+ end
+
+ describe '#todo_target_link' do
+ context 'when given a design' do
+ let(:todo) { design_todo }
+
+ it 'produces a good link' do
+ path = helper.todo_target_path(todo)
+ link = helper.todo_target_link(todo)
+ expected = "<a href=\"#{path}\">design #{design.to_reference}</a>"
+
+ expect(link).to eq(expected)
+ end
+ end
+ end
+
+ describe '#todo_target_path' do
+ context 'when given a design' do
+ let(:todo) { design_todo }
+
+ it 'responds with an appropriate path' do
+ path = helper.todo_target_path(todo)
+ issue_path = Gitlab::Routing.url_helpers
+ .project_issue_path(issue.project, issue)
+
+ expect(path).to eq("#{issue_path}/designs/#{design.filename}##{dom_id(design_todo.note)}")
+ end
+ end
+ end
+
+ describe '#todo_target_type_name' do
+ context 'when given a design todo' do
+ let(:todo) { design_todo }
+
+ it 'responds with an appropriate target type name' do
+ name = helper.todo_target_type_name(todo)
+
+ expect(name).to eq('design')
+ end
+ end
+ end
+
+ describe '#todo_types_options' do
+ it 'includes a match for a design todo' do
+ options = helper.todo_types_options
+ design_option = options.find { |o| o[:id] == design_todo.target_type }
+
+ expect(design_option).to include(text: 'Design')
end
end
end
diff --git a/spec/helpers/visibility_level_helper_spec.rb b/spec/helpers/visibility_level_helper_spec.rb
index debe4401308..b7a88ee5010 100644
--- a/spec/helpers/visibility_level_helper_spec.rb
+++ b/spec/helpers/visibility_level_helper_spec.rb
@@ -146,22 +146,22 @@ describe VisibilityLevelHelper do
using RSpec::Parameterized::TableSyntax
- PUBLIC = Gitlab::VisibilityLevel::PUBLIC
- INTERNAL = Gitlab::VisibilityLevel::INTERNAL
- PRIVATE = Gitlab::VisibilityLevel::PRIVATE
+ public_vis = Gitlab::VisibilityLevel::PUBLIC
+ internal_vis = Gitlab::VisibilityLevel::INTERNAL
+ private_vis = Gitlab::VisibilityLevel::PRIVATE
# This is a subset of all the permutations
where(:requested_level, :max_allowed, :global_default_level, :restricted_levels, :expected) do
- PUBLIC | PUBLIC | PUBLIC | [] | PUBLIC
- PUBLIC | PUBLIC | PUBLIC | [PUBLIC] | INTERNAL
- INTERNAL | PUBLIC | PUBLIC | [] | INTERNAL
- INTERNAL | PRIVATE | PRIVATE | [] | PRIVATE
- PRIVATE | PUBLIC | PUBLIC | [] | PRIVATE
- PUBLIC | PRIVATE | INTERNAL | [] | PRIVATE
- PUBLIC | INTERNAL | PUBLIC | [] | INTERNAL
- PUBLIC | PRIVATE | PUBLIC | [] | PRIVATE
- PUBLIC | INTERNAL | INTERNAL | [] | INTERNAL
- PUBLIC | PUBLIC | INTERNAL | [] | PUBLIC
+ public_vis | public_vis | public_vis | [] | public_vis
+ public_vis | public_vis | public_vis | [public_vis] | internal_vis
+ internal_vis | public_vis | public_vis | [] | internal_vis
+ internal_vis | private_vis | private_vis | [] | private_vis
+ private_vis | public_vis | public_vis | [] | private_vis
+ public_vis | private_vis | internal_vis | [] | private_vis
+ public_vis | internal_vis | public_vis | [] | internal_vis
+ public_vis | private_vis | public_vis | [] | private_vis
+ public_vis | internal_vis | internal_vis | [] | internal_vis
+ public_vis | public_vis | internal_vis | [] | public_vis
end
before do
diff --git a/spec/helpers/x509_helper_spec.rb b/spec/helpers/x509_helper_spec.rb
index dcdf57ce035..db3f6158195 100644
--- a/spec/helpers/x509_helper_spec.rb
+++ b/spec/helpers/x509_helper_spec.rb
@@ -57,4 +57,22 @@ describe X509Helper do
end
end
end
+
+ describe '#x509_signature?' do
+ let(:x509_signature) { create(:x509_commit_signature) }
+ let(:gpg_signature) { create(:gpg_signature) }
+
+ it 'detects a x509 signed commit' do
+ signature = Gitlab::X509::Signature.new(
+ X509Helpers::User1.signed_commit_signature,
+ X509Helpers::User1.signed_commit_base_data,
+ X509Helpers::User1.certificate_email,
+ X509Helpers::User1.signed_commit_time
+ )
+
+ expect(x509_signature?(x509_signature)).to be_truthy
+ expect(x509_signature?(signature)).to be_truthy
+ expect(x509_signature?(gpg_signature)).to be_falsey
+ end
+ end
end