DEV: Spec clarification example (#7458)

DEV: Spec clarification example (#7458)

diff --git a/spec/models/topic_posters_summary_spec.rb b/spec/models/topic_posters_summary_spec.rb
index 74f32a1..d558ad6 100644
--- a/spec/models/topic_posters_summary_spec.rb
+++ b/spec/models/topic_posters_summary_spec.rb
@@ -4,47 +4,42 @@ require 'rails_helper'
 
 describe TopicPostersSummary do
   describe '#summary' do
-    let(:summary) { described_class.new(topic).summary }
+    let!(:topic_creator)  { Fabricate(:user) }
 
-    let(:topic) do
-      Fabricate(:topic,
-        user: topic_creator,
-        last_poster: last_poster,
-        featured_user1: featured_user1,
-        featured_user2: featured_user2,
-        featured_user3: featured_user3,
-        featured_user4: featured_user4
-      )
-    end
+    context "when there are no other posters" do
+      let!(:topic) do
+        Fabricate(:topic,
+          user: topic_creator,
+        )
+      end
 
-    let(:topic_creator)  { Fabricate(:user) }
-    let(:last_poster)    { nil }
-    let(:featured_user1) { nil }
-    let(:featured_user2) { nil }
-    let(:featured_user3) { nil }
-    let(:featured_user4) { nil }
+      let!(:summary) { described_class.new(topic).summary }
 
-    it 'contains only the topic creator when there are no other posters' do
-      expect(summary.count).to eq 1
+      it 'contains only the topic creator' do
+        expect(summary.count).to eq 1
 
-      summary.first.tap do |topic_poster|
-        expect(topic_poster.user).to eq topic_creator
-        expect(topic_poster.description).to eq(
-          "#{I18n.t(:original_poster)}, #{I18n.t(:most_recent_poster)}"
-        )
+        summary.first.tap do |topic_poster|
+          expect(topic_poster.user).to eq topic_creator
+          expect(topic_poster.description).to eq(
+            "#{I18n.t(:original_poster)}, #{I18n.t(:most_recent_poster)}"
+          )
+        end
       end
     end
 
-    context 'when the lastest poster is also the topic creator' do
-      let(:last_poster)    { topic_creator }
-      let(:featured_user1) { Fabricate(:user) }
+    context 'when the last poster is also the topic creator' do
+      let!(:featured_user1) { Fabricate(:user) }
 
-      before do
-        topic.last_poster = topic_creator
-        topic.featured_user1 = featured_user1
-        topic.save!
+      let!(:topic) do
+        Fabricate(:topic,
+          user: topic_creator,
+          last_poster: topic_creator,
+          featured_user1: featured_user1,
+        )
       end
 
+      let!(:summary) { described_class.new(topic).summary }
+
       it 'keeps the topic creator at the front of the summary' do
         expect(summary.map(&:user)).to eq([
           topic_creator,
@@ -54,11 +49,24 @@ describe TopicPostersSummary do
     end
 
     context 'when the topic has many posters' do
-      let(:last_poster)    { Fabricate(:user) }
-      let(:featured_user1) { Fabricate(:user) }
-      let(:featured_user2) { Fabricate(:user) }
-      let(:featured_user3) { Fabricate(:user) }
-      let(:featured_user4) { Fabricate(:user) }
+      let!(:last_poster)    { Fabricate(:user) }
+      let!(:featured_user1) { Fabricate(:user) }
+      let!(:featured_user2) { Fabricate(:user) }
+      let!(:featured_user3) { Fabricate(:user) }
+      let!(:featured_user4) { Fabricate(:user) }
+
+      let!(:topic) do
+        Fabricate(:topic,
+          user: topic_creator,
+          last_poster: last_poster,
+          featured_user1: featured_user1,
+          featured_user2: featured_user2,
+          featured_user3: featured_user3,
+          featured_user4: featured_user4
+        )
+      end
+
+      let!(:summary) { described_class.new(topic).summary }
 
       it 'contains only five posters with latest poster at the end' do
         expect(summary.map(&:user)).to eq([

GitHub sha: 75a6c440

1 Like