Fix: 他のサーバーの同じ絵文字を複数つけられる問題 (#141)

* スタンプ機能のリファクタリング、投稿の反応者へも配送

* Fix: 他のサーバーの絵文字を複数つけられる問題
This commit is contained in:
KMY(雪あすか) 2023-10-18 10:56:21 +09:00 committed by GitHub
parent b73eb1b847
commit 1d9c77063e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 12 deletions

View file

@ -19,15 +19,6 @@ RSpec.describe EmojiReactService, type: :service do
expect(subject.first.custom_emoji_id).to be_nil
end
context 'with name duplication on same account' do
before { Fabricate(:emoji_reaction, status: status, name: '😀') }
it 'react with emoji' do
expect(subject.count).to eq 1
expect(subject.first.name).to eq '😀'
end
end
context 'when multiple reactions by same account' do
let(:name) { '😂' }
@ -139,6 +130,37 @@ RSpec.describe EmojiReactService, type: :service do
end
end
context 'with name duplication of unicode emoji on same account' do
before { Fabricate(:emoji_reaction, status: status, name: '😀') }
it 'react with emoji' do
expect(subject.count).to eq 1
expect(subject.first.name).to eq '😀'
end
end
context 'with name duplication of local cuetom emoji on same account' do
let(:name) { 'ohagi' }
let!(:custom_emoji) { Fabricate(:custom_emoji, shortcode: 'ohagi') }
before { Fabricate(:emoji_reaction, account: sender, status: status, name: 'ohagi', custom_emoji: custom_emoji) }
it 'react with emoji' do
expect { subject.count }.to raise_error Mastodon::ValidationError
end
end
context 'with name duplication of remote cuetom emoji on same account' do
let(:name) { 'ohagi@foo.bar' }
let!(:custom_emoji) { Fabricate(:custom_emoji, shortcode: 'ohagi', domain: 'foo.bar', uri: 'https://foo.bar/emoji/ohagi') }
before { Fabricate(:emoji_reaction, account: sender, status: status, name: 'ohagi', custom_emoji: custom_emoji) }
it 'react with emoji' do
expect { subject.count }.to raise_error Mastodon::ValidationError
end
end
context 'when has remote followers' do
let!(:bob) { Fabricate(:account, domain: 'foo.bar', uri: 'https://foo.bar/actor', inbox_url: 'https://foo.bar/inbox', protocol: 'activitypub') }