Commit 65ba4da9 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Add support for keyword arguments in label reference method

parent 1fa7671f
...@@ -66,16 +66,13 @@ class Label < ActiveRecord::Base ...@@ -66,16 +66,13 @@ class Label < ActiveRecord::Base
# #
# format - Symbol format to use (default: :id, optional: :name) # format - Symbol format to use (default: :id, optional: :name)
# #
# Note that its argument differs from other objects implementing Referable. If
# a non-Symbol argument is given (such as a Project), it will default to :id.
#
# Examples: # Examples:
# #
# Label.first.to_reference # => "~1" # Label.first.to_reference # => "~1"
# Label.first.to_reference(:name) # => "~\"bug\"" # Label.first.to_reference(format: :name) # => "~\"bug\""
# #
# Returns a String # Returns a String
def to_reference(format = :id) def to_reference(_from_project = nil, format: :id)
if format == :name && !name.include?('"') if format == :name && !name.include?('"')
%(#{self.class.reference_prefix}"#{name}") %(#{self.class.reference_prefix}"#{name}")
else else
......
...@@ -66,7 +66,7 @@ class SystemNoteService ...@@ -66,7 +66,7 @@ class SystemNoteService
def self.change_label(noteable, project, author, added_labels, removed_labels) def self.change_label(noteable, project, author, added_labels, removed_labels)
labels_count = added_labels.count + removed_labels.count labels_count = added_labels.count + removed_labels.count
references = ->(label) { label.to_reference(:id) } references = ->(label) { label.to_reference(format: :id) }
added_labels = added_labels.map(&references).join(' ') added_labels = added_labels.map(&references).join(' ')
removed_labels = removed_labels.map(&references).join(' ') removed_labels = removed_labels.map(&references).join(' ')
......
...@@ -209,7 +209,7 @@ References should be parseable even inside _<%= merge_request.to_reference %>_ e ...@@ -209,7 +209,7 @@ References should be parseable even inside _<%= merge_request.to_reference %>_ e
- Label by ID: <%= simple_label.to_reference %> - Label by ID: <%= simple_label.to_reference %>
- Label by name: <%= Label.reference_prefix %><%= simple_label.name %> - Label by name: <%= Label.reference_prefix %><%= simple_label.name %>
- Label by name in quotes: <%= label.to_reference(:name) %> - Label by name in quotes: <%= label.to_reference(format: :name) %>
- Ignored in code: `<%= simple_label.to_reference %>` - Ignored in code: `<%= simple_label.to_reference %>`
- Ignored in links: [Link to <%= simple_label.to_reference %>](#label-link) - Ignored in links: [Link to <%= simple_label.to_reference %>](#label-link)
- Link to label by reference: [Label](<%= label.to_reference %>) - Link to label by reference: [Label](<%= label.to_reference %>)
......
...@@ -111,7 +111,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do ...@@ -111,7 +111,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
context 'String-based multi-word references in quotes' do context 'String-based multi-word references in quotes' do
let(:label) { create(:label, name: 'gfm references', project: project) } let(:label) { create(:label, name: 'gfm references', project: project) }
let(:reference) { label.to_reference(:name) } let(:reference) { label.to_reference(format: :name) }
it 'links to a valid reference' do it 'links to a valid reference' do
doc = reference_filter("See #{reference}") doc = reference_filter("See #{reference}")
......
...@@ -65,12 +65,12 @@ describe Label, models: true do ...@@ -65,12 +65,12 @@ describe Label, models: true do
context 'using name' do context 'using name' do
it 'returns a String reference to the object' do it 'returns a String reference to the object' do
expect(label.to_reference(:name)).to eq %(~"#{label.name}") expect(label.to_reference(format: :name)).to eq %(~"#{label.name}")
end end
it 'uses id when name contains double quote' do it 'uses id when name contains double quote' do
label = create(:label, name: %q{"irony"}) label = create(:label, name: %q{"irony"})
expect(label.to_reference(:name)).to eq "~#{label.id}" expect(label.to_reference(format: :name)).to eq "~#{label.id}"
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment