From d4c94fa004117fdb7226b1b846a12d12dc0542d9 Mon Sep 17 00:00:00 2001 From: Joël Quenneville Date: Fri, 7 Apr 2017 14:18:30 -0400 Subject: DRY up reblog vs original status check Checking reblog vs original status was happening in multiple places across the app. For views, this logic was encapsulated in a helper method named `proper_status` but in the other layers of the app, the logic was duplicated. Because the logic is used at all layers of the app, we extracted it into a `Status#proper` method on the model and changed all uses of the logic to use this method. There is now a single source of truth for this condition. We added test coverage to untested methods that got refactored. --- spec/models/status_spec.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'spec/models/status_spec.rb') diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index b9d079521..db244ebe7 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -97,4 +97,15 @@ RSpec.describe Status, type: :model do describe '#favourites_count' do pending 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 -- cgit From 4fdeac21f4520c5fffb06b1143bf4b1ac88d8533 Mon Sep 17 00:00:00 2001 From: Joël Quenneville Date: Fri, 7 Apr 2017 15:30:36 -0400 Subject: Implement pending specs on Status Implement the two pending specs on `Status`: `reblogs_count` and `favourites_count`. --- spec/models/status_spec.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'spec/models/status_spec.rb') diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index b9d079521..675e18418 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -91,10 +91,20 @@ RSpec.describe Status, type: :model do end describe '#reblogs_count' do - pending + it 'is the number of reblogs' do + Fabricate(:status, account: bob, reblog: subject) + Fabricate(:status, account: alice, reblog: subject) + + expect(subject.reblogs_count).to eq 2 + end end describe '#favourites_count' do - pending + it 'is the number of favorites' do + Fabricate(:favourite, account: bob, status: subject) + Fabricate(:favourite, account: alice, status: subject) + + expect(subject.favourites_count).to eq 2 + end end end -- cgit