diff --git a/app/serializers/basic_group_serializer.rb b/app/serializers/basic_group_serializer.rb index aec7f7cf854..26fb3ea2dec 100644 --- a/app/serializers/basic_group_serializer.rb +++ b/app/serializers/basic_group_serializer.rb @@ -43,7 +43,7 @@ class BasicGroupSerializer < ApplicationSerializer end def include_has_messages? - staff? + staff? || scope.can_see_group_messages?(object) end def include_bio_raw? diff --git a/spec/serializers/basic_group_serializer_spec.rb b/spec/serializers/basic_group_serializer_spec.rb index 4d1801ff924..7b06b2959d6 100644 --- a/spec/serializers/basic_group_serializer_spec.rb +++ b/spec/serializers/basic_group_serializer_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe BasicGroupSerializer do let(:guardian) { Guardian.new } let(:group) { Fabricate(:group) } - subject { described_class.new(group, scope: Guardian.new, root: false) } + subject { described_class.new(group, scope: guardian, root: false) } describe '#display_name' do describe 'automatic group' do @@ -26,17 +26,52 @@ describe BasicGroupSerializer do describe '#bio_raw' do let(:group) { Fabricate(:group, bio_raw: 'testing') } - let(:user) do - user = Fabricate(:user) - group.add_owner(user) - user + subject do + described_class.new(group, scope: guardian, root: false, owner_group_ids: [group.id]) end - let(:guardian) { Guardian.new(user) } - describe 'group owner' do + let(:user) do + user = Fabricate(:user) + group.add_owner(user) + user + end + it 'should include bio_raw' do - expect(subject.bio_raw).to eq('testing') + expect(subject.as_json[:bio_raw]).to eq('testing') + end + end + end + + describe '#has_messages' do + let(:group) { Fabricate(:group, has_messages: true) } + + describe 'for a staff user' do + let(:guardian) { Guardian.new(Fabricate(:moderator)) } + + it 'should be present' do + expect(subject.as_json[:has_messages]).to eq(true) + end + end + + describe 'for a group user' do + let(:user) { Fabricate(:user) } + let(:guardian) { Guardian.new(user) } + + before do + group.add(user) + end + + it 'should be present' do + expect(subject.as_json[:has_messages]).to eq(true) + end + end + + describe 'for a normal user' do + let(:guardian) { Guardian.new(Fabricate(:user)) } + + it 'should not be present' do + expect(subject.as_json[:has_messages]).to eq(nil) end end end