Merge pull request #1184 from thoughtbot/extract-proper-status
DRY up reblog vs original status check
This commit is contained in:
		
						commit
						32748c0f71
					
				
					 7 changed files with 86 additions and 11 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
		Reference in a new issue