end
end
+ describe 'on create' do
+ let(:local_account) { Fabricate(:account, username: 'local', domain: nil) }
+ let(:remote_account) { Fabricate(:account, username: 'remote', domain: 'example.com') }
+
+ subject { Status.new }
+
+ describe 'on a status that ends with the local-only emoji' do
+ before do
+ subject.text = 'A toot ' + subject.local_only_emoji
+ end
+
+ context 'if the status originates from this instance' do
+ before do
+ subject.account = local_account
+ end
+
+ it 'is marked local-only' do
+ subject.save!
+
+ expect(subject).to be_local_only
+ end
+ end
+
+ context 'if the status is remote' do
+ before do
+ subject.account = remote_account
+ end
+
+ it 'is not marked local-only' do
+ subject.save!
+
+ expect(subject).to_not be_local_only
+ end
+ end
+ end
+ end
+
describe '.mutes_map' do
let(:status) { Fabricate(:status) }
let(:account) { Fabricate(:account) }
results = Status.as_tag_timeline(tag)
expect(results).to include(status)
end
+
+ context 'on a local-only status' do
+ let(:tag) { Fabricate(:tag) }
+ let(:status) { Fabricate(:status, local_only: true, tags: [tag]) }
+
+ context 'if account is nil' do
+ let(:account) { nil }
+
+ it 'filters the local-only status out of the result set' do
+ expect(Status.as_tag_timeline(tag, account)).not_to include(status)
+ end
+ end
+
+ context 'if account is not nil and local' do
+ let(:account) { Fabricate(:account, domain: nil) }
+
+ it 'keeps the local-only status in the result set' do
+ expect(Status.as_tag_timeline(tag, account)).to include(status)
+ end
+ end
+ end
end
describe '.permitted_for' do