diff options
author | Eugen <eugen@zeonfederated.com> | 2017-04-07 22:28:15 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-07 22:28:15 +0200 |
commit | 32748c0f718b44bcdb4d19526bc9931c325acb63 (patch) | |
tree | 3568cd8b5283cc1e0fd994354a002eda04044d45 /spec/models | |
parent | 37a36b0bec1f27508926a420de05e6aa3c96fd10 (diff) | |
parent | d4c94fa004117fdb7226b1b846a12d12dc0542d9 (diff) |
Merge pull request #1184 from thoughtbot/extract-proper-status
DRY up reblog vs original status check
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/account_spec.rb | 68 | ||||
-rw-r--r-- | spec/models/status_spec.rb | 11 |
2 files changed, 77 insertions, 2 deletions
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index d7f59adb8..93a45459d 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -99,11 +99,75 @@ RSpec.describe Account, type: :model do end describe '#favourited?' do - pending + let(:original_status) do + author = Fabricate(:account, username: 'original') + Fabricate(:status, account: author) + end + + context 'when the status is a reblog of another status' do + let(:original_reblog) do + author = Fabricate(:account, username: 'original_reblogger') + Fabricate(:status, reblog: original_status, account: author) + end + + it 'is is true when this account has favourited it' do + Fabricate(:favourite, status: original_reblog, account: subject) + + expect(subject.favourited?(original_status)).to eq true + end + + it 'is false when this account has not favourited it' do + expect(subject.favourited?(original_status)).to eq false + end + end + + context 'when the status is an original status' do + it 'is is true when this account has favourited it' do + Fabricate(:favourite, status: original_status, account: subject) + + expect(subject.favourited?(original_status)).to eq true + end + + it 'is false when this account has not favourited it' do + expect(subject.favourited?(original_status)).to eq false + end + end end describe '#reblogged?' do - pending + let(:original_status) do + author = Fabricate(:account, username: 'original') + Fabricate(:status, account: author) + end + + context 'when the status is a reblog of another status'do + let(:original_reblog) do + author = Fabricate(:account, username: 'original_reblogger') + Fabricate(:status, reblog: original_status, account: author) + end + + it 'is true when this account has reblogged it' do + Fabricate(:status, reblog: original_reblog, account: subject) + + expect(subject.reblogged?(original_reblog)).to eq true + end + + it 'is false when this account has not reblogged it' do + expect(subject.reblogged?(original_reblog)).to eq false + end + end + + context 'when the status is an original status' do + it 'is true when this account has reblogged it' do + Fabricate(:status, reblog: original_status, account: subject) + + expect(subject.reblogged?(original_status)).to eq true + end + + it 'is false when this account has not reblogged it' do + expect(subject.reblogged?(original_status)).to eq false + end + end end describe '.find_local' do diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index 675e18418..000bee0f5 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -107,4 +107,15 @@ RSpec.describe Status, type: :model do expect(subject.favourites_count).to eq 2 end end + + describe '#proper' do + it 'is itself for original statuses' do + expect(subject.proper).to eq subject + end + + it 'is the source status for reblogs' do + subject.reblog = other + expect(subject.proper).to eq other + end + end end |