mirror of
https://github.com/discourse/discourse.git
synced 2025-04-02 05:19:43 +08: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
|
end
|
||||||
|
|
||||||
def register_reviewable_type(reviewable_type_class)
|
def register_reviewable_type(reviewable_type_class)
|
||||||
types = Reviewable.types
|
extend_list_method Reviewable, :types, [reviewable_type_class.name]
|
||||||
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
|
reloadable_patch do
|
||||||
Reviewable.send(:define_singleton_method, :types) { types }
|
klass.send(:define_singleton_method, method) { current_list }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -472,4 +472,15 @@ describe Plugin::Instance do
|
|||||||
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
|
||||||
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
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user