diff --git a/app/models/topic.rb b/app/models/topic.rb
index 171c7fd066c..7a370a92616 100644
--- a/app/models/topic.rb
+++ b/app/models/topic.rb
@@ -918,8 +918,10 @@ class Topic < ActiveRecord::Base
 
     sql = <<SQL
 SELECT 1 FROM topic_allowed_groups tg
-JOIN group_archived_messages gm ON gm.topic_id = tg.topic_id AND gm.group_id = tg.group_id
-  WHERE tg.group_id IN (SELECT g.id FROM group_users g WHERE g.user_id = :user_id)
+JOIN group_archived_messages gm
+      ON gm.topic_id = tg.topic_id AND
+         gm.group_id = tg.group_id
+  WHERE tg.group_id IN (SELECT g.group_id FROM group_users g WHERE g.user_id = :user_id)
     AND tg.topic_id = :topic_id
 
 UNION ALL
@@ -930,7 +932,6 @@ WHERE tu.user_id = :user_id AND tu.topic_id = :topic_id
 SQL
 
     User.exec_sql(sql, user_id: user.id, topic_id: id).to_a.length > 0
-
   end
 
   TIME_TO_FIRST_RESPONSE_SQL ||= <<-SQL
diff --git a/spec/models/topic_spec.rb b/spec/models/topic_spec.rb
index b5d15f36e54..3799738ad16 100644
--- a/spec/models/topic_spec.rb
+++ b/spec/models/topic_spec.rb
@@ -1568,6 +1568,20 @@ describe Topic do
         expect(Guardian.new(walter).can_see?(group_private_topic)).to be_truthy
       end
     end
+  end
 
+  it "Correctly sets #message_archived?" do
+    topic = Fabricate(:private_message_topic)
+    user = topic.user
+
+    expect(topic.message_archived?(user)).to eq(false)
+
+    group = Fabricate(:group)
+    group.add(user)
+
+    TopicAllowedGroup.create!(topic_id: topic.id, group_id: group.id)
+    GroupArchivedMessage.create!(topic_id: topic.id, group_id: group.id)
+
+    expect(topic.message_archived?(user)).to eq(true)
   end
 end