FEATURE: Add external_id to topics (#15825)

* FEATURE: Add external_id to topics

This commit allows for topics to be created and fetched by an
external_id. These changes are API only for now as there aren't any
front changes.

* add annotations

* add external_id to this spec

* Several PR feedback changes

- Add guardian to find topic
- 403 is returned for not found as well now
- add `include_external_id?`
- external_id is now case insensitive
- added test for posts_controller
- added test for topic creator
- created constant for max length
- check that it redirects to the correct path
- restrain external id in routes file

* remove puts

* fix tests

* only check for external_id in webhook if exists

* Update index to exclude external_id if null

* annotate

* Update app/controllers/topics_controller.rb

We need to check whether the topic is present first before passing it to the guardian.

Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>

* Apply suggestions from code review

Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>

Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
This commit is contained in:
Blake Erickson
2022-02-08 20:55:32 -07:00
committed by GitHub
parent 59343c3057
commit 71f7f7ed49
13 changed files with 145 additions and 1 deletions

View File

@ -286,5 +286,15 @@ describe TopicCreator do
expect(topic.pinned_at).to eq_time(time2)
end
end
context 'external_id' do
it 'adds external_id' do
topic = TopicCreator.create(user, Guardian.new(user), valid_attrs.merge(
external_id: 'external_id'
))
expect(topic.external_id).to eq('external_id')
end
end
end
end