diff --git a/app/views/social_previews/article.html.erb b/app/views/social_previews/article.html.erb
index 7e66edf1f..d1f48ea06 100644
--- a/app/views/social_previews/article.html.erb
+++ b/app/views/social_previews/article.html.erb
@@ -132,7 +132,9 @@
<% @tag_badges.each do |badge| %>
-

+ <%# Use a seed in Random so we don't break cache on every render %>
+ <% not_so_rand = Random.new(badge.id + @article.id) %>
+

<% end %>
diff --git a/app/views/social_previews/comment.html.erb b/app/views/social_previews/comment.html.erb
index 0460983ba..ff2ca7670 100644
--- a/app/views/social_previews/comment.html.erb
+++ b/app/views/social_previews/comment.html.erb
@@ -125,7 +125,9 @@
<% @tag_badges.each do |badge| %>
-

+ <%# Use a seed in Random so we don't break cache on every render %>
+ <% not_so_rand = Random.new(badge.id + @comment.id) %>
+

<% end %>
diff --git a/app/views/social_previews/user.html.erb b/app/views/social_previews/user.html.erb
index ad08f51d7..08d3cad34 100644
--- a/app/views/social_previews/user.html.erb
+++ b/app/views/social_previews/user.html.erb
@@ -118,7 +118,9 @@
<% @tag_badges.each do |badge| %>
-

+ <%# Use a seed in Random so we don't break cache on every render %>
+ <% not_so_rand = Random.new(badge.id + @user.id) %>
+

<% end %>
diff --git a/spec/requests/social_previews_spec.rb b/spec/requests/social_previews_spec.rb
index 210dd8326..b7164e94b 100644
--- a/spec/requests/social_previews_spec.rb
+++ b/spec/requests/social_previews_spec.rb
@@ -2,9 +2,9 @@ require "rails_helper"
RSpec.describe "SocialPreviews", type: :request do
let(:user) { create(:user) }
- let(:tag) { create(:tag) }
+ let(:tag) { create(:tag, badge: create(:badge)) }
let(:organization) { create(:organization) }
- let(:article) { create(:article, user_id: user.id) }
+ let(:article) { create(:article, user_id: user.id, tags: tag.name) }
let(:comment) { create(:comment, user_id: user.id, commentable_id: article.id) }
let(:image_url) { "https://hcti.io/v1/image/6c52de9d-4d37-4008-80f8-67155589e1a1" }
let(:listing) { create(:classified_listing, user_id: user.id, category: "cfp") }
@@ -55,6 +55,8 @@ RSpec.describe "SocialPreviews", type: :request do
end
it "renders consistent HTML between requests" do
+ create(:badge_achievement, user: user)
+
# We use the HTML for caching. It needs to be deterministic (if data is unchanged, the HTML should be the same)
get "/social_previews/user/#{user.id}"
first_request_body = response.body