Display issuable state only in notes and issuable description
Closes #30964
This commit is contained in:
parent
bbd83376d6
commit
de71a46594
|
@ -23,7 +23,7 @@ module Issuable
|
|||
|
||||
included do
|
||||
cache_markdown_field :title, pipeline: :single_line
|
||||
cache_markdown_field :description
|
||||
cache_markdown_field :description, issuable_state_filter_enabled: true
|
||||
|
||||
belongs_to :author, class_name: "User"
|
||||
belongs_to :assignee, class_name: "User"
|
||||
|
|
|
@ -16,7 +16,7 @@ class Note < ActiveRecord::Base
|
|||
|
||||
ignore_column :original_discussion_id
|
||||
|
||||
cache_markdown_field :note, pipeline: :note
|
||||
cache_markdown_field :note, pipeline: :note, issuable_state_filter_enabled: true
|
||||
|
||||
# Attribute containing rendered and redacted Markdown as generated by
|
||||
# Banzai::ObjectRenderer.
|
||||
|
|
|
@ -9,6 +9,8 @@ module Banzai
|
|||
VISIBLE_STATES = %w(closed merged).freeze
|
||||
|
||||
def call
|
||||
return doc unless context[:issuable_state_filter_enabled]
|
||||
|
||||
extractor = Banzai::IssuableExtractor.new(project, current_user)
|
||||
issuables = extractor.extract([doc])
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ describe Banzai::Filter::IssuableStateFilter, lib: true do
|
|||
include FilterSpecHelper
|
||||
|
||||
let(:user) { create(:user) }
|
||||
let(:context) { { current_user: user, issuable_state_filter_enabled: true } }
|
||||
|
||||
def create_link(text, data)
|
||||
link_to(text, '', class: 'gfm has-tooltip', data: data)
|
||||
|
@ -20,7 +21,7 @@ describe Banzai::Filter::IssuableStateFilter, lib: true do
|
|||
it 'ignores non-issuable links' do
|
||||
project = create(:empty_project, :public)
|
||||
link = create_link('text', project: project, reference_type: 'issue')
|
||||
doc = filter(link, current_user: user)
|
||||
doc = filter(link, context)
|
||||
|
||||
expect(doc.css('a').last.text).to eq('text')
|
||||
end
|
||||
|
@ -28,7 +29,7 @@ describe Banzai::Filter::IssuableStateFilter, lib: true do
|
|||
it 'ignores issuable links with empty content' do
|
||||
issue = create(:issue, :closed)
|
||||
link = create_link('', issue: issue.id, reference_type: 'issue')
|
||||
doc = filter(link, current_user: user)
|
||||
doc = filter(link, context)
|
||||
|
||||
expect(doc.css('a').last.text).to eq('')
|
||||
end
|
||||
|
@ -40,17 +41,26 @@ describe Banzai::Filter::IssuableStateFilter, lib: true do
|
|||
issue: issue.id,
|
||||
reference_type: 'issue'
|
||||
)
|
||||
doc = filter(link, current_user: user)
|
||||
doc = filter(link, context)
|
||||
|
||||
expect(doc.css('a').last.inner_html).
|
||||
to eq('something <strong>else</strong> [closed]')
|
||||
end
|
||||
|
||||
it 'does not append state when filter is not enabled' do
|
||||
issue = create(:issue, :closed)
|
||||
link = create_link('text', issue: issue.id, reference_type: 'issue')
|
||||
context = { current_user: user }
|
||||
doc = filter(link, context)
|
||||
|
||||
expect(doc.css('a').last.text).to eq('text')
|
||||
end
|
||||
|
||||
context 'for issue references' do
|
||||
it 'ignores open issue references' do
|
||||
issue = create(:issue)
|
||||
link = create_link('text', issue: issue.id, reference_type: 'issue')
|
||||
doc = filter(link, current_user: user)
|
||||
doc = filter(link, context)
|
||||
|
||||
expect(doc.css('a').last.text).to eq('text')
|
||||
end
|
||||
|
@ -58,7 +68,7 @@ describe Banzai::Filter::IssuableStateFilter, lib: true do
|
|||
it 'ignores reopened issue references' do
|
||||
reopened_issue = create(:issue, :reopened)
|
||||
link = create_link('text', issue: reopened_issue.id, reference_type: 'issue')
|
||||
doc = filter(link, current_user: user)
|
||||
doc = filter(link, context)
|
||||
|
||||
expect(doc.css('a').last.text).to eq('text')
|
||||
end
|
||||
|
@ -66,7 +76,7 @@ describe Banzai::Filter::IssuableStateFilter, lib: true do
|
|||
it 'appends [closed] to closed issue references' do
|
||||
closed_issue = create(:issue, :closed)
|
||||
link = create_link('text', issue: closed_issue.id, reference_type: 'issue')
|
||||
doc = filter(link, current_user: user)
|
||||
doc = filter(link, context)
|
||||
|
||||
expect(doc.css('a').last.text).to eq('text [closed]')
|
||||
end
|
||||
|
@ -76,7 +86,7 @@ describe Banzai::Filter::IssuableStateFilter, lib: true do
|
|||
it 'ignores open merge request references' do
|
||||
mr = create(:merge_request)
|
||||
link = create_link('text', merge_request: mr.id, reference_type: 'merge_request')
|
||||
doc = filter(link, current_user: user)
|
||||
doc = filter(link, context)
|
||||
|
||||
expect(doc.css('a').last.text).to eq('text')
|
||||
end
|
||||
|
@ -84,7 +94,7 @@ describe Banzai::Filter::IssuableStateFilter, lib: true do
|
|||
it 'ignores reopened merge request references' do
|
||||
mr = create(:merge_request, :reopened)
|
||||
link = create_link('text', merge_request: mr.id, reference_type: 'merge_request')
|
||||
doc = filter(link, current_user: user)
|
||||
doc = filter(link, context)
|
||||
|
||||
expect(doc.css('a').last.text).to eq('text')
|
||||
end
|
||||
|
@ -92,7 +102,7 @@ describe Banzai::Filter::IssuableStateFilter, lib: true do
|
|||
it 'ignores locked merge request references' do
|
||||
mr = create(:merge_request, :locked)
|
||||
link = create_link('text', merge_request: mr.id, reference_type: 'merge_request')
|
||||
doc = filter(link, current_user: user)
|
||||
doc = filter(link, context)
|
||||
|
||||
expect(doc.css('a').last.text).to eq('text')
|
||||
end
|
||||
|
@ -100,7 +110,7 @@ describe Banzai::Filter::IssuableStateFilter, lib: true do
|
|||
it 'appends [closed] to closed merge request references' do
|
||||
mr = create(:merge_request, :closed)
|
||||
link = create_link('text', merge_request: mr.id, reference_type: 'merge_request')
|
||||
doc = filter(link, current_user: user)
|
||||
doc = filter(link, context)
|
||||
|
||||
expect(doc.css('a').last.text).to eq('text [closed]')
|
||||
end
|
||||
|
@ -108,7 +118,7 @@ describe Banzai::Filter::IssuableStateFilter, lib: true do
|
|||
it 'appends [merged] to merged merge request references' do
|
||||
mr = create(:merge_request, :merged)
|
||||
link = create_link('text', merge_request: mr.id, reference_type: 'merge_request')
|
||||
doc = filter(link, current_user: user)
|
||||
doc = filter(link, context)
|
||||
|
||||
expect(doc.css('a').last.text).to eq('text [merged]')
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue