From e79421abb7c9732cc5960243dc9dcc53c1821ca9 Mon Sep 17 00:00:00 2001
From: Daniel Waterworth <me@danielwaterworth.com>
Date: Mon, 6 May 2019 09:58:39 +0100
Subject: [PATCH] Prefabricated users

---
 spec/components/topic_view_spec.rb | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/spec/components/topic_view_spec.rb b/spec/components/topic_view_spec.rb
index 042c0cced46..b02157ac1e6 100644
--- a/spec/components/topic_view_spec.rb
+++ b/spec/components/topic_view_spec.rb
@@ -5,6 +5,9 @@ require 'topic_view'
 
 describe TopicView do
 
+  fab!(:user) { Fabricate(:user) }
+  fab!(:moderator) { Fabricate(:moderator) }
+  fab!(:admin) { Fabricate(:admin) }
   let(:topic) { create_topic }
   fab!(:evil_trout) { Fabricate(:evil_trout) }
   let(:first_poster) { topic.user }
@@ -27,15 +30,13 @@ describe TopicView do
   end
 
   it "handles deleted topics" do
-    admin = Fabricate(:admin)
     topic.trash!(admin)
-    expect { TopicView.new(topic.id, Fabricate(:user)) }.to raise_error(Discourse::InvalidAccess)
+    expect { TopicView.new(topic.id, user) }.to raise_error(Discourse::InvalidAccess)
     expect { TopicView.new(topic.id, admin) }.not_to raise_error
   end
 
   context "setup_filtered_posts" do
     describe "filters posts with ignored users" do
-      fab!(:user) { Fabricate(:user) }
       fab!(:ignored_user) { Fabricate(:ignored_user, user: evil_trout, ignored_user: user) }
       let!(:post) { Fabricate(:post, topic: topic, user: first_poster) }
       let!(:post2) { Fabricate(:post, topic: topic, user: evil_trout) }
@@ -104,9 +105,6 @@ describe TopicView do
     let!(:p2) { Fabricate(:post, topic: topic, user: evil_trout, percent_rank: 0.5) }
     let!(:p3) { Fabricate(:post, topic: topic, user: first_poster, percent_rank: 0) }
 
-    fab!(:moderator) { Fabricate(:moderator) }
-    fab!(:admin) { Fabricate(:admin) }
-
     it "it can find the best responses" do
 
       best2 = TopicView.new(topic.id, evil_trout, best: 2)
@@ -114,7 +112,7 @@ describe TopicView do
       expect(best2.posts[0].id).to eq(p2.id)
       expect(best2.posts[1].id).to eq(p3.id)
 
-      topic.update_status('closed', true, Fabricate(:admin))
+      topic.update_status('closed', true, admin)
       expect(topic.posts.count).to eq(4)
 
       # should not get the status post
@@ -197,7 +195,7 @@ describe TopicView do
       end
 
       it "does not log personal message view if user can't see the message" do
-        expect { TopicView.new(private_message.id, Fabricate(:user)) }.to raise_error(Discourse::InvalidAccess)
+        expect { TopicView.new(private_message.id, user) }.to raise_error(Discourse::InvalidAccess)
         expect(UserHistory.where(action: UserHistory.actions[:check_personal_message]).count).to eq(0)
       end
 
@@ -232,7 +230,6 @@ describe TopicView do
     end
 
     describe "#get_canonical_path" do
-      fab!(:user) { Fabricate(:user) }
       fab!(:topic) { Fabricate(:topic) }
       let(:path) { "/1234" }
 
@@ -259,7 +256,6 @@ describe TopicView do
         topic.stubs(:highest_post_number).returns(5)
         topic
       end
-      let(:user) { Fabricate(:user) }
 
       before do
         TopicView.any_instance.expects(:find_topic).with(1234).returns(topic)
@@ -364,7 +360,7 @@ describe TopicView do
       anon_posts = TopicView.new(topic.id).posts
       expect(anon_posts.map(&:id)).to eq([p1.id, p3.id])
 
-      admin_posts = TopicView.new(topic.id, Fabricate(:moderator)).posts
+      admin_posts = TopicView.new(topic.id, moderator).posts
       expect(admin_posts.map(&:id)).to eq([p1.id, p2.id, p3.id])
     end
   end
@@ -374,7 +370,7 @@ describe TopicView do
     # Create the posts in a different order than the sort_order
     let!(:p5) { Fabricate(:post, topic: topic, user: evil_trout) }
     let!(:p2) { Fabricate(:post, topic: topic, user: evil_trout) }
-    let!(:p6) { Fabricate(:post, topic: topic, user: Fabricate(:user), deleted_at: Time.now) }
+    let!(:p6) { Fabricate(:post, topic: topic, user: user, deleted_at: Time.now) }
     let!(:p4) { Fabricate(:post, topic: topic, user: evil_trout, deleted_at: Time.now) }
     let!(:p1) { Fabricate(:post, topic: topic, user: first_poster) }
     let!(:p7) { Fabricate(:post, topic: topic, user: evil_trout, deleted_at: Time.now) }