|  | 
| 1 | 1 | # frozen_string_literal: true | 
| 2 | 2 | 
 | 
| 3 | 3 | describe UserSummary do | 
|  | 4 | +  fab!(:admin) | 
|  | 5 | + | 
| 4 | 6 |   describe "solved_count" do | 
| 5 | 7 |     it "indicates the number of times a user's post is a topic's solution" do | 
| 6 | 8 |       topic = Fabricate(:topic) | 
| 7 | 9 |       Fabricate(:post, topic:) | 
| 8 | 10 |       user = Fabricate(:user) | 
| 9 |  | -      admin = Fabricate(:admin) | 
| 10 | 11 |       post = Fabricate(:post, topic:, user:) | 
| 11 | 12 | 
 | 
| 12 | 13 |       user_summary = UserSummary.new(user, Guardian.new) | 
|  | 
| 20 | 21 |       expect(user_summary.solved_count).to eq(1) | 
| 21 | 22 |       expect(admin_summary.solved_count).to eq(0) | 
| 22 | 23 |     end | 
|  | 24 | + | 
|  | 25 | +    it "excludes deleted topics" do | 
|  | 26 | +      topic = Fabricate(:topic) | 
|  | 27 | +      Fabricate(:post, topic:) | 
|  | 28 | +      user = Fabricate(:user) | 
|  | 29 | +      post = Fabricate(:post, topic:, user:) | 
|  | 30 | + | 
|  | 31 | +      user_summary = UserSummary.new(user, Guardian.new) | 
|  | 32 | +      DiscourseSolved.accept_answer!(post, admin) | 
|  | 33 | + | 
|  | 34 | +      topic.update!(deleted_at: Time.zone.now) | 
|  | 35 | + | 
|  | 36 | +      expect(user_summary.solved_count).to eq(0) | 
|  | 37 | +    end | 
|  | 38 | + | 
|  | 39 | +    it "excludes deleted posts" do | 
|  | 40 | +      topic = Fabricate(:topic) | 
|  | 41 | +      Fabricate(:post, topic:) | 
|  | 42 | +      user = Fabricate(:user) | 
|  | 43 | +      post = Fabricate(:post, topic:, user:) | 
|  | 44 | + | 
|  | 45 | +      user_summary = UserSummary.new(user, Guardian.new) | 
|  | 46 | +      DiscourseSolved.accept_answer!(post, admin) | 
|  | 47 | + | 
|  | 48 | +      post.update!(deleted_at: Time.zone.now) | 
|  | 49 | + | 
|  | 50 | +      expect(user_summary.solved_count).to eq(0) | 
|  | 51 | +    end | 
| 23 | 52 |   end | 
| 24 | 53 | end | 
0 commit comments