FIX: N+1 for admins viewing groups page

Groups page was loading fields that are only used on the group show
page, so move those fields to the GroupShowSerializer.
Also only fetch the default category and tag notifications once.
This commit is contained in:
Neil Lalonde
2020-09-16 14:58:52 -04:00
parent 28cd1aaf8e
commit 8333872e88
4 changed files with 173 additions and 93 deletions

View File

@@ -40,22 +40,6 @@ describe BasicGroupSerializer do
end
end
describe '#automatic_membership_email_domains' do
fab!(:group) { Fabricate(:group, automatic_membership_email_domains: 'ilovediscourse.com') }
let(:admin_guardian) { Guardian.new(Fabricate(:admin)) }
it 'should include email domains for admin' do
subject = described_class.new(group, scope: admin_guardian, root: false, owner_group_ids: [group.id])
expect(subject.as_json[:automatic_membership_email_domains]).to eq('ilovediscourse.com')
end
it 'should not include email domains for other users' do
subject = described_class.new(group, scope: guardian, root: false, owner_group_ids: [group.id])
expect(subject.as_json[:automatic_membership_email_domains]).to eq(nil)
end
end
describe '#has_messages' do
fab!(:group) { Fabricate(:group, has_messages: true) }
@@ -113,26 +97,4 @@ describe BasicGroupSerializer do
end
end
end
describe 'admin only fields' do
fab!(:group) { Fabricate(:group, email_username: 'foo@bar.com', email_password: 'pa$$w0rd') }
describe 'for a user' do
let(:guardian) { Guardian.new(Fabricate(:user)) }
it 'are not visible' do
expect(subject.as_json[:email_username]).to be_nil
expect(subject.as_json[:email_password]).to be_nil
end
end
describe 'for an admin' do
let(:guardian) { Guardian.new(Fabricate(:admin)) }
it 'are visible' do
expect(subject.as_json[:email_username]).to eq('foo@bar.com')
expect(subject.as_json[:email_password]).to eq('pa$$w0rd')
end
end
end
end