about summary refs log tree commit diff
path: root/spec/models/status_spec.rb
diff options
context:
space:
mode:
authorJoël Quenneville <joelq@thoughtbot.com>2017-04-07 14:18:30 -0400
committerJoël Quenneville <joelq@thoughtbot.com>2017-04-07 14:18:30 -0400
commitd4c94fa004117fdb7226b1b846a12d12dc0542d9 (patch)
tree93d2a3a70ad6bb6f23a63c9f6fc086c9f197384f /spec/models/status_spec.rb
parent4e41cd9ab8f51120d558b70528b163c98993be53 (diff)
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.
Diffstat (limited to 'spec/models/status_spec.rb')
-rw-r--r--spec/models/status_spec.rb11
1 files changed, 11 insertions, 0 deletions
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