about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--spec/models/status_spec.rb38
1 files changed, 32 insertions, 6 deletions
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb
index 5b0adb769..1f5a03877 100644
--- a/spec/models/status_spec.rb
+++ b/spec/models/status_spec.rb
@@ -586,6 +586,32 @@ RSpec.describe Status, type: :model do
         end
       end
     end
+
+    context 'with local-only statuses' do
+      let(:status) { Fabricate(:status, local_only: true) }
+
+      subject { Status.as_public_timeline(viewer) }
+
+      context 'without a viewer' do
+        let(:viewer) { nil }
+
+        it 'excludes local-only statuses' do
+          expect(subject).to_not include(status)
+        end
+      end
+
+      context 'with a viewer' do
+        let(:viewer) { Fabricate(:account, username: 'viewer') }
+
+        it 'includes local-only statuses' do
+          expect(subject).to include(status)
+        end
+      end
+
+      # TODO: What happens if the viewer is remote?
+      # Can the viewer be remote?
+      # What prevents the viewer from being remote?
+    end
   end
 
   describe '.as_tag_timeline' do
@@ -612,19 +638,19 @@ RSpec.describe Status, type: :model do
       let(:tag) { Fabricate(:tag) }
       let(:status) { Fabricate(:status, local_only: true, tags: [tag]) }
 
-      context 'if account is nil' do
-        let(:account) { nil }
+      context 'without a viewer' do
+        let(:viewer) { nil }
 
         it 'filters the local-only status out of the result set' do
-          expect(Status.as_tag_timeline(tag, account)).not_to include(status)
+          expect(Status.as_tag_timeline(tag, viewer)).not_to include(status)
         end
       end
 
-      context 'if account is not nil and local' do
-        let(:account) { Fabricate(:account, domain: nil) }
+      context 'with a viewer' do
+        let(:viewer) { Fabricate(:account, username: 'viewer', domain: nil) }
 
         it 'keeps the local-only status in the result set' do
-          expect(Status.as_tag_timeline(tag, account)).to include(status)
+          expect(Status.as_tag_timeline(tag, viewer)).to include(status)
         end
       end
     end