FIX: allow both meta_data and custom_fields when creating a topic
For some reasons, we have two ways of associating "custom fields" to a new topic: using 'meta_data' and 'custom_fields'. However, if we were to provide both arguments, the 'meta_data' would be overwritten by any 'custom_fields' provided. This commit ensures we can use both and merges the 'custom_fields' with the 'meta_data'.
This commit is contained in:
parent
5133e03b99
commit
13d4b05963
|
@ -35,8 +35,9 @@ class TopicCreator
|
||||||
def create
|
def create
|
||||||
topic = Topic.new(setup_topic_params)
|
topic = Topic.new(setup_topic_params)
|
||||||
setup_tags(topic)
|
setup_tags(topic)
|
||||||
|
|
||||||
if fields = @opts[:custom_fields]
|
if fields = @opts[:custom_fields]
|
||||||
topic.custom_fields = fields
|
topic.custom_fields.merge!(fields)
|
||||||
end
|
end
|
||||||
|
|
||||||
DiscourseEvent.trigger(:before_create_topic, topic, self)
|
DiscourseEvent.trigger(:before_create_topic, topic, self)
|
||||||
|
|
|
@ -36,6 +36,18 @@ describe TopicCreator do
|
||||||
expect(TopicCreator.create(moderator, Guardian.new(moderator), valid_attrs)).to be_valid
|
expect(TopicCreator.create(moderator, Guardian.new(moderator), valid_attrs)).to be_valid
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "supports both meta_data and custom_fields" do
|
||||||
|
opts = valid_attrs.merge(
|
||||||
|
meta_data: { import_topic_id: "foo" },
|
||||||
|
custom_fields: { import_id: "bar" }
|
||||||
|
)
|
||||||
|
|
||||||
|
topic = TopicCreator.create(admin, Guardian.new(admin), opts)
|
||||||
|
|
||||||
|
expect(topic.custom_fields["import_topic_id"]).to eq("foo")
|
||||||
|
expect(topic.custom_fields["import_id"]).to eq("bar")
|
||||||
|
end
|
||||||
|
|
||||||
context 'regular user' do
|
context 'regular user' do
|
||||||
before { SiteSetting.min_trust_to_create_topic = TrustLevel[0] }
|
before { SiteSetting.min_trust_to_create_topic = TrustLevel[0] }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue