diff options
Diffstat (limited to 'spec/models/status_spec.rb')
-rw-r--r-- | spec/models/status_spec.rb | 60 |
1 files changed, 31 insertions, 29 deletions
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index e0a7aba7e..04e5c26af 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -1,12 +1,14 @@ +# frozen_string_literal: true + require 'rails_helper' RSpec.describe Status, type: :model do + subject { Fabricate(:status, account: alice) } + let(:alice) { Fabricate(:account, username: 'alice') } let(:bob) { Fabricate(:account, username: 'bob') } let(:other) { Fabricate(:status, account: bob, text: 'Skulls for the skull god! The enemy\'s gates are sideways!') } - subject { Fabricate(:status, account: alice) } - describe '#local?' do it 'returns true when no remote URI is set' do expect(subject.local?).to be true @@ -204,14 +206,14 @@ RSpec.describe Status, type: :model do end describe 'on create' do + subject { Status.new } + 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 + subject.text = "A toot #{subject.local_only_emoji}" end context 'if the status originates from this instance' do @@ -241,11 +243,11 @@ RSpec.describe Status, type: :model do end describe '.mutes_map' do + subject { Status.mutes_map([status.conversation.id], account) } + let(:status) { Fabricate(:status) } let(:account) { Fabricate(:account) } - subject { Status.mutes_map([status.conversation.id], account) } - it 'returns a hash' do expect(subject).to be_a Hash end @@ -257,11 +259,11 @@ RSpec.describe Status, type: :model do end describe '.favourites_map' do + subject { Status.favourites_map([status], account) } + let(:status) { Fabricate(:status) } let(:account) { Fabricate(:account) } - subject { Status.favourites_map([status], account) } - it 'returns a hash' do expect(subject).to be_a Hash end @@ -273,11 +275,11 @@ RSpec.describe Status, type: :model do end describe '.reblogs_map' do + subject { Status.reblogs_map([status], account) } + let(:status) { Fabricate(:status) } let(:account) { Fabricate(:account) } - subject { Status.reblogs_map([status], account) } - it 'returns a hash' do expect(subject).to be_a Hash end @@ -289,52 +291,52 @@ RSpec.describe Status, type: :model do end describe '.as_direct_timeline' do + subject(:results) { Status.as_direct_timeline(account) } + let(:account) { Fabricate(:account) } let(:followed) { Fabricate(:account) } let(:not_followed) { Fabricate(:account) } - before do - Fabricate(:follow, account: account, target_account: followed) - - @self_public_status = Fabricate(:status, account: account, visibility: :public) - @self_direct_status = Fabricate(:status, account: account, visibility: :direct) - @followed_public_status = Fabricate(:status, account: followed, visibility: :public) - @followed_direct_status = Fabricate(:status, account: followed, visibility: :direct) - @not_followed_direct_status = Fabricate(:status, account: not_followed, visibility: :direct) + let!(:self_public_status) { Fabricate(:status, account: account, visibility: :public) } + let!(:self_direct_status) { Fabricate(:status, account: account, visibility: :direct) } + let!(:followed_public_status) { Fabricate(:status, account: followed, visibility: :public) } + let!(:followed_direct_status) { Fabricate(:status, account: followed, visibility: :direct) } + let!(:not_followed_direct_status) { Fabricate(:status, account: not_followed, visibility: :direct) } - @results = Status.as_direct_timeline(account) + before do + account.follow!(followed) end it 'does not include public statuses from self' do - expect(@results).to_not include(@self_public_status) + expect(results).to_not include(self_public_status) end it 'includes direct statuses from self' do - expect(@results).to include(@self_direct_status) + expect(results).to include(self_direct_status) end it 'does not include public statuses from followed' do - expect(@results).to_not include(@followed_public_status) + expect(results).to_not include(followed_public_status) end it 'does not include direct statuses not mentioning recipient from followed' do - expect(@results).to_not include(@followed_direct_status) + expect(results).to_not include(followed_direct_status) end it 'does not include direct statuses not mentioning recipient from non-followed' do - expect(@results).to_not include(@not_followed_direct_status) + expect(results).to_not include(not_followed_direct_status) end it 'includes direct statuses mentioning recipient from followed' do - Fabricate(:mention, account: account, status: @followed_direct_status) + Fabricate(:mention, account: account, status: followed_direct_status) results2 = Status.as_direct_timeline(account) - expect(results2).to include(@followed_direct_status) + expect(results2).to include(followed_direct_status) end it 'includes direct statuses mentioning recipient from non-followed' do - Fabricate(:mention, account: account, status: @not_followed_direct_status) + Fabricate(:mention, account: account, status: not_followed_direct_status) results2 = Status.as_direct_timeline(account) - expect(results2).to include(@not_followed_direct_status) + expect(results2).to include(not_followed_direct_status) end end |