diff --git a/app/models/trends/tags.rb b/app/models/trends/tags.rb index 03707d6870..5b00fca7ec 100644 --- a/app/models/trends/tags.rb +++ b/app/models/trends/tags.rb @@ -13,6 +13,7 @@ class Trends::Tags < Trends::Base def register(status, at_time = Time.now.utc) return unless !status.reblog? && %i(public public_unlisted login).include?(status.visibility.to_sym) && !status.account.silenced? + return if !status.account.local? && DomainBlock.block_trends?(status.account.domain) status.tags.each do |tag| add(tag, status.account_id, at_time) if tag.usable? diff --git a/spec/models/trends/tags_spec.rb b/spec/models/trends/tags_spec.rb index f2818fca87..91ca91f078 100644 --- a/spec/models/trends/tags_spec.rb +++ b/spec/models/trends/tags_spec.rb @@ -23,6 +23,33 @@ RSpec.describe Trends::Tags do end end + describe '#register' do + let(:tag) { Fabricate(:tag, usable: true) } + let(:account) { Fabricate(:account) } + let(:status) { Fabricate(:status, account: account, tags: [tag], created_at: at_time, updated_at: at_time) } + + it 'records history' do + subject.register(status, at_time) + expect(tag.history.get(at_time).accounts).to eq 1 + expect(tag.history.get(at_time).uses).to eq 1 + expect(subject.send(:recently_used_ids, at_time)).to eq [tag.id] + end + + context 'when account is rejected appending trends' do + let(:account) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/actor') } + + before do + Fabricate(:domain_block, domain: 'example.com', block_trends: true, severity: :noop) + end + + it 'does not record history' do + subject.register(status, at_time) + expect(tag.history.get(at_time).accounts).to eq 0 + expect(tag.history.get(at_time).uses).to eq 0 + end + end + end + describe '#query' do it 'returns a composable query scope' do expect(subject.query).to be_a Trends::Query