mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 17:06:31 -06:00
DEV: Expose a way to extend a method that returns a list
This commit is contained in:
parent
df1ab9259b
commit
aec457e09a
@ -605,11 +605,15 @@ class Plugin::Instance
|
||||
end
|
||||
|
||||
def register_reviewable_type(reviewable_type_class)
|
||||
types = Reviewable.types
|
||||
types << reviewable_type_class.name
|
||||
extend_list_method Reviewable, :types, [reviewable_type_class.name]
|
||||
end
|
||||
|
||||
def extend_list_method(klass, method, new_attributes)
|
||||
current_list = klass.send(method)
|
||||
current_list.concat(new_attributes)
|
||||
|
||||
reloadable_patch do
|
||||
Reviewable.send(:define_singleton_method, :types) { types }
|
||||
klass.send(:define_singleton_method, method) { current_list }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -465,11 +465,22 @@ describe Plugin::Instance do
|
||||
describe '#register_reviewable_types' do
|
||||
it 'Overrides the existing Reviewable types adding new ones' do
|
||||
current_types = Reviewable.types
|
||||
new_type_class = Class
|
||||
new_type_class = Class
|
||||
|
||||
Plugin::Instance.new.register_reviewable_type new_type_class
|
||||
Plugin::Instance.new.register_reviewable_type new_type_class
|
||||
|
||||
expect(Reviewable.types).to match_array(current_types << new_type_class.name)
|
||||
expect(Reviewable.types).to match_array(current_types << new_type_class.name)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#extend_list_method' do
|
||||
it 'Overrides the existing list appending new elements' do
|
||||
current_list = Reviewable.types
|
||||
new_element = Class.name
|
||||
|
||||
Plugin::Instance.new.extend_list_method Reviewable, :types, [new_element]
|
||||
|
||||
expect(Reviewable.types).to match_array(current_list << new_element)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user