diff options
Diffstat (limited to 'spec/helpers/issues_helper_spec.rb')
-rw-r--r-- | spec/helpers/issues_helper_spec.rb | 92 |
1 files changed, 85 insertions, 7 deletions
diff --git a/spec/helpers/issues_helper_spec.rb b/spec/helpers/issues_helper_spec.rb index 9cf3808ab72..f5f26d306fb 100644 --- a/spec/helpers/issues_helper_spec.rb +++ b/spec/helpers/issues_helper_spec.rb @@ -284,7 +284,7 @@ RSpec.describe IssuesHelper do iid: issue.iid, is_issue_author: 'false', issue_type: 'issue', - new_issue_path: new_project_issue_path(project), + new_issue_path: new_project_issue_path(project, { issue: { description: "Related to \##{issue.iid}.\n\n" } }), project_path: project.full_path, report_abuse_path: new_abuse_report_path(user_id: issue.author.id, ref_url: issue_url(issue)), submit_as_spam_path: mark_as_spam_project_issue_path(project, issue) @@ -310,21 +310,21 @@ RSpec.describe IssuesHelper do can_bulk_update: 'true', can_edit: 'true', can_import_issues: 'true', - email: current_user&.notification_email, + email: current_user&.notification_email_or_default, emails_help_page_path: help_page_path('development/emails', anchor: 'email-namespace'), empty_state_svg_path: '#', export_csv_path: export_csv_project_issues_path(project), - has_project_issues: project_issues(project).exists?.to_s, + full_path: project.full_path, + has_any_issues: project_issues(project).exists?.to_s, import_csv_issues_path: '#', initial_email: project.new_issuable_address(current_user, 'issue'), + is_project: 'true', is_signed_in: current_user.present?.to_s, - issues_path: project_issues_path(project), jira_integration_path: help_page_url('integration/jira/issues', anchor: 'view-jira-issues'), markdown_help_path: help_page_path('user/markdown'), max_attachment_size: number_to_human_size(Gitlab::CurrentSettings.max_attachment_size.megabytes), new_issue_path: new_project_issue_path(project, issue: { milestone_id: finder.milestones.first.id }), project_import_jira_path: project_import_jira_path(project), - project_path: project.full_path, quick_actions_help_path: help_page_path('user/project/quick_actions'), reset_path: new_issuable_address_project_path(project, issuable_type: 'issue'), rss_path: '#', @@ -332,11 +332,11 @@ RSpec.describe IssuesHelper do sign_in_path: new_user_session_path } - expect(helper.issues_list_data(project, current_user, finder)).to include(expected) + expect(helper.project_issues_list_data(project, current_user, finder)).to include(expected) end end - describe '#issues_list_data' do + describe '#project_issues_list_data' do context 'when user is signed in' do it_behaves_like 'issues list data' do let(:current_user) { double.as_null_object } @@ -350,6 +350,33 @@ RSpec.describe IssuesHelper do end end + describe '#group_issues_list_data' do + let(:group) { create(:group) } + let(:current_user) { double.as_null_object } + let(:issues) { [] } + + it 'returns expected result' do + allow(helper).to receive(:current_user).and_return(current_user) + allow(helper).to receive(:can?).and_return(true) + allow(helper).to receive(:image_path).and_return('#') + allow(helper).to receive(:url_for).and_return('#') + + expected = { + autocomplete_award_emojis_path: autocomplete_award_emojis_path, + calendar_path: '#', + empty_state_svg_path: '#', + full_path: group.full_path, + has_any_issues: issues.to_a.any?.to_s, + is_signed_in: current_user.present?.to_s, + jira_integration_path: help_page_url('integration/jira/issues', anchor: 'view-jira-issues'), + rss_path: '#', + sign_in_path: new_user_session_path + } + + expect(helper.group_issues_list_data(group, current_user, issues)).to include(expected) + end + end + describe '#issue_manual_ordering_class' do context 'when sorting by relative position' do before do @@ -410,4 +437,55 @@ RSpec.describe IssuesHelper do end end end + + describe '#issue_hidden?' do + context 'when issue is hidden' do + let_it_be(:banned_user) { build(:user, :banned) } + let_it_be(:hidden_issue) { build(:issue, author: banned_user) } + + context 'when `ban_user_feature_flag` feature flag is enabled' do + it 'returns `true`' do + expect(helper.issue_hidden?(hidden_issue)).to eq(true) + end + end + + context 'when `ban_user_feature_flag` feature flag is disabled' do + before do + stub_feature_flags(ban_user_feature_flag: false) + end + + it 'returns `false`' do + expect(helper.issue_hidden?(hidden_issue)).to eq(false) + end + end + end + + context 'when issue is not hidden' do + it 'returns `false`' do + expect(helper.issue_hidden?(issue)).to eq(false) + end + end + end + + describe '#hidden_issue_icon' do + let_it_be(:banned_user) { build(:user, :banned) } + let_it_be(:hidden_issue) { build(:issue, author: banned_user) } + let_it_be(:mock_svg) { '<svg></svg>'.html_safe } + + before do + allow(helper).to receive(:sprite_icon).and_return(mock_svg) + end + + context 'when issue is hidden' do + it 'returns icon with tooltip' do + expect(helper.hidden_issue_icon(hidden_issue)).to eq("<span class=\"has-tooltip\" title=\"This issue is hidden because its author has been banned\">#{mock_svg}</span>") + end + end + + context 'when issue is not hidden' do + it 'returns `nil`' do + expect(helper.hidden_issue_icon(issue)).to be_nil + end + end + end end |