diff options
author | Matt Jankowski <mjankowski@thoughtbot.com> | 2017-06-05 10:07:44 -0400 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-06-05 16:07:44 +0200 |
commit | 6201f96b8a49d58b5b2d73fac9fa1fa93f5890ed (patch) | |
tree | 57e2f3b751dab120705459f5b9d9c39e2f7e63bb /spec/lib | |
parent | c26cea262b7673b0b239dd1da6754e7788aa08d8 (diff) |
Introduce StatusThreadingConcern (#3490)
* Add a StatusFilter class to identify visibility of statuses by accounts * Extract StatusThreadingConcern from Status * Clarify purpose of checking for nil account
Diffstat (limited to 'spec/lib')
-rw-r--r-- | spec/lib/status_filter_spec.rb | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/spec/lib/status_filter_spec.rb b/spec/lib/status_filter_spec.rb new file mode 100644 index 000000000..07f217fc3 --- /dev/null +++ b/spec/lib/status_filter_spec.rb @@ -0,0 +1,65 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe StatusFilter do + describe '#filtered?' do + let(:status) { Fabricate(:status) } + + context 'without an account' do + subject { described_class.new(status, nil) } + + it { is_expected.not_to be_filtered } + end + + context 'with real account' do + let(:account) { Fabricate(:account) } + subject { described_class.new(status, account) } + + context 'when there are no connections' do + it { is_expected.not_to be_filtered } + end + + context 'when status account is blocked' do + before do + Fabricate(:block, account: account, target_account: status.account) + end + + it { is_expected.to be_filtered } + end + + context 'when status account domain is blocked' do + before do + status.account.update(domain: 'example.com') + Fabricate(:account_domain_block, account: account, domain: status.account_domain) + end + + it { is_expected.to be_filtered } + end + + context 'when status account is muted' do + before do + Fabricate(:mute, account: account, target_account: status.account) + end + + it { is_expected.to be_filtered } + end + + context 'when status account is silenced' do + before do + status.account.update(silenced: true) + end + + it { is_expected.to be_filtered } + end + + context 'when status policy does not allow show' do + before do + expect_any_instance_of(StatusPolicy).to receive(:show?).and_return(false) + end + + it { is_expected.to be_filtered } + end + end + end +end |