Add subject to group and projects labels which return group/project

This commit is contained in:
Douglas Barbosa Alexandre 2016-10-17 17:48:46 -02:00
parent d3b76e832f
commit 8379fbcd47
5 changed files with 22 additions and 8 deletions

View File

@ -14,7 +14,7 @@ module LabelsHelper
#
# Examples:
#
# # Allow the generated link to use the label's own project
# # Allow the generated link to use the label's own subject
# link_to_label(label)
#
# # Force the generated link to use a provided group
@ -31,13 +31,7 @@ module LabelsHelper
#
# Returns a String
def link_to_label(label, subject: nil, type: :issue, tooltip: true, css_class: nil, &block)
subject ||=
case label
when GroupLabel then label.group
when ProjectLabel then label.project
end
link = label_filter_path(subject, label, type: type)
link = label_filter_path(subject || label.subject, label, type: type)
if block_given?
link_to link, class: css_class, &block

View File

@ -3,6 +3,8 @@ class GroupLabel < Label
validates :group, presence: true
alias_attribute :subject, :group
def to_reference(source_project = nil, target_project = nil, format: :id)
super(source_project, target_project, format: format)
end

View File

@ -10,6 +10,8 @@ class ProjectLabel < Label
delegate :group, to: :project, allow_nil: true
alias_attribute :subject, :project
def to_reference(target_project = nil, format: :id)
super(project, target_project, format: format)
end

View File

@ -9,6 +9,14 @@ describe GroupLabel, models: true do
it { is_expected.to validate_presence_of(:group) }
end
describe '#subject' do
it 'aliases group to subject' do
subject = described_class.new(group: build(:group))
expect(subject.subject).to be(subject.group)
end
end
describe '#to_reference' do
let(:label) { create(:group_label) }

View File

@ -64,6 +64,14 @@ describe ProjectLabel, models: true do
end
end
describe '#subject' do
it 'aliases project to subject' do
subject = described_class.new(project: build(:empty_project))
expect(subject.subject).to be(subject.project)
end
end
describe '#to_reference' do
let(:label) { create(:label) }