From 65ba4da925361e69f59fc87eaf908e933079f2c3 Mon Sep 17 00:00:00 2001
From: Grzegorz Bizon <grzesiek.bizon@gmail.com>
Date: Thu, 25 Feb 2016 08:37:49 +0100
Subject: [PATCH] Add support for keyword arguments in label reference method

---
 app/models/label.rb                                   | 9 +++------
 app/services/system_note_service.rb                   | 2 +-
 spec/fixtures/markdown.md.erb                         | 2 +-
 spec/lib/banzai/filter/label_reference_filter_spec.rb | 2 +-
 spec/models/label_spec.rb                             | 4 ++--
 5 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/app/models/label.rb b/app/models/label.rb
index c34f4e4ba60..02683a08dd6 100644
--- a/app/models/label.rb
+++ b/app/models/label.rb
@@ -66,16 +66,13 @@ class Label < ActiveRecord::Base
   #
   # 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:
   #
-  #   Label.first.to_reference        # => "~1"
-  #   Label.first.to_reference(:name) # => "~\"bug\""
+  #   Label.first.to_reference                # => "~1"
+  #   Label.first.to_reference(format: :name) # => "~\"bug\""
   #
   # Returns a String
-  def to_reference(format = :id)
+  def to_reference(_from_project = nil, format: :id)
     if format == :name && !name.include?('"')
       %(#{self.class.reference_prefix}"#{name}")
     else
diff --git a/app/services/system_note_service.rb b/app/services/system_note_service.rb
index edced010811..58a861ee08e 100644
--- a/app/services/system_note_service.rb
+++ b/app/services/system_note_service.rb
@@ -66,7 +66,7 @@ class SystemNoteService
   def self.change_label(noteable, project, author, added_labels, removed_labels)
     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(' ')
     removed_labels = removed_labels.map(&references).join(' ')
 
diff --git a/spec/fixtures/markdown.md.erb b/spec/fixtures/markdown.md.erb
index fe6d42acee2..1772cc3f6a4 100644
--- a/spec/fixtures/markdown.md.erb
+++ b/spec/fixtures/markdown.md.erb
@@ -209,7 +209,7 @@ References should be parseable even inside _<%= merge_request.to_reference %>_ e
 
 - Label by ID: <%= simple_label.to_reference %>
 - 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 links: [Link to <%= simple_label.to_reference %>](#label-link)
 - Link to label by reference: [Label](<%= label.to_reference %>)
diff --git a/spec/lib/banzai/filter/label_reference_filter_spec.rb b/spec/lib/banzai/filter/label_reference_filter_spec.rb
index b46ccc47605..9d9e5cbac3d 100644
--- a/spec/lib/banzai/filter/label_reference_filter_spec.rb
+++ b/spec/lib/banzai/filter/label_reference_filter_spec.rb
@@ -111,7 +111,7 @@ describe Banzai::Filter::LabelReferenceFilter, lib: true do
 
   context 'String-based multi-word references in quotes' do
     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
       doc = reference_filter("See #{reference}")
diff --git a/spec/models/label_spec.rb b/spec/models/label_spec.rb
index 696fbf7e0aa..fd133e1ca1b 100644
--- a/spec/models/label_spec.rb
+++ b/spec/models/label_spec.rb
@@ -65,12 +65,12 @@ describe Label, models: true do
 
     context 'using name' 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
 
       it 'uses id when name contains double quote' do
         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
-- 
GitLab