Merge branch 'normalize_emoji_aliases_paths' into 'master'
Fix not normalized emoji paths ## What does this MR do? It normalizes emoji names in `api` and `toggle_award` ## Are there points in the code the reviewer needs to double check? ## Why was this MR needed? User was able to store +1 and thumbsup to databse, causing UI inconsistency. ## What are the relevant issue numbers? Fixes #19104 ## Screenshots (if relevant) ## Does this MR meet the acceptance criteria? - [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added - [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md) - [x] API support added - Tests - [x] Added for this feature/bug - [x] All builds are passing - [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides) - [x] Branch has no merge conflicts with `master` (if you do - rebase it please) - [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) See merge request !5060
This commit is contained in:
commit
65352b5baa
|
@ -82,6 +82,7 @@ v 8.10.0 (unreleased)
|
|||
- Add basic system information like memory and disk usage to the admin panel
|
||||
- Don't garbage collect commits that have related DB records like comments
|
||||
- More descriptive message for git hooks and file locks
|
||||
- Aliases of award emoji should be stored as original name. !5060 (dixpac)
|
||||
- Handle custom Git hook result in GitLab UI
|
||||
- Allow '?', or '&' for label names
|
||||
- Fix importer for GitHub Pull Requests when a branch was reused across Pull Requests
|
||||
|
|
|
@ -65,8 +65,7 @@ module Awardable
|
|||
|
||||
def create_award_emoji(name, current_user)
|
||||
return unless emoji_awardable?
|
||||
|
||||
award_emoji.create(name: name, user: current_user)
|
||||
award_emoji.create(name: normalize_name(name), user: current_user)
|
||||
end
|
||||
|
||||
def remove_award_emoji(name, current_user)
|
||||
|
@ -80,4 +79,10 @@ module Awardable
|
|||
create_award_emoji(emoji_name, current_user)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def normalize_name(name)
|
||||
Gitlab::AwardEmoji.normalize_emoji_name(name)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -229,8 +229,7 @@ class Note < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def award_emoji_name
|
||||
original_name = note.match(Banzai::Filter::EmojiFilter.emoji_pattern)[1]
|
||||
Gitlab::AwardEmoji.normalize_emoji_name(original_name)
|
||||
note.match(Banzai::Filter::EmojiFilter.emoji_pattern)[1]
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -8,7 +8,6 @@ module Notes
|
|||
if note.award_emoji?
|
||||
noteable = note.noteable
|
||||
todo_service.new_award_emoji(noteable, current_user)
|
||||
|
||||
return noteable.create_award_emoji(note.award_emoji_name, current_user)
|
||||
end
|
||||
|
||||
|
|
|
@ -56,9 +56,9 @@ module API
|
|||
|
||||
not_found!('Award Emoji') unless can_read_awardable?
|
||||
|
||||
award = awardable.award_emoji.new(name: params[:name], user: current_user)
|
||||
award = awardable.create_award_emoji(params[:name], current_user)
|
||||
|
||||
if award.save
|
||||
if award.persisted?
|
||||
present award, with: Entities::AwardEmoji
|
||||
else
|
||||
not_found!("Award Emoji #{award.errors.messages}")
|
||||
|
|
|
@ -135,6 +135,22 @@ describe API::API, api: true do
|
|||
|
||||
expect(response).to have_http_status(401)
|
||||
end
|
||||
|
||||
it "normalizes +1 as thumbsup award" do
|
||||
post api("/projects/#{project.id}/issues/#{issue.id}/award_emoji", user), name: '+1'
|
||||
|
||||
expect(issue.award_emoji.last.name).to eq("thumbsup")
|
||||
end
|
||||
|
||||
context 'when the emoji already has been awarded' do
|
||||
it 'returns a 404 status code' do
|
||||
post api("/projects/#{project.id}/issues/#{issue.id}/award_emoji", user), name: 'thumbsup'
|
||||
post api("/projects/#{project.id}/issues/#{issue.id}/award_emoji", user), name: 'thumbsup'
|
||||
|
||||
expect(response).to have_http_status(404)
|
||||
expect(json_response["message"]).to match("has already been taken")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -147,6 +163,22 @@ describe API::API, api: true do
|
|||
expect(response).to have_http_status(201)
|
||||
expect(json_response['user']['username']).to eq(user.username)
|
||||
end
|
||||
|
||||
it "normalizes +1 as thumbsup award" do
|
||||
post api("/projects/#{project.id}/issues/#{issue.id}/notes/#{note.id}/award_emoji", user), name: '+1'
|
||||
|
||||
expect(note.award_emoji.last.name).to eq("thumbsup")
|
||||
end
|
||||
|
||||
context 'when the emoji already has been awarded' do
|
||||
it 'returns a 404 status code' do
|
||||
post api("/projects/#{project.id}/issues/#{issue.id}/notes/#{note.id}/award_emoji", user), name: 'rocket'
|
||||
post api("/projects/#{project.id}/issues/#{issue.id}/notes/#{note.id}/award_emoji", user), name: 'rocket'
|
||||
|
||||
expect(response).to have_http_status(404)
|
||||
expect(json_response["message"]).to match("has already been taken")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE /projects/:id/awardable/:awardable_id/award_emoji/:award_id' do
|
||||
|
|
Loading…
Reference in New Issue