diff options
author | Rubén Dávila <ruben@gitlab.com> | 2017-09-05 11:03:24 -0500 |
---|---|---|
committer | Rubén Dávila <ruben@gitlab.com> | 2017-09-05 15:54:07 -0500 |
commit | 66cfb901c0df6eb5741721e901b66fbe82e183ce (patch) | |
tree | 89010ac7169b33eaae719fca19cc695eb7999a9d /spec/support/group_members_shared_example.rb | |
parent | b8b4993805c620f6c29f3189b6e151c47854c5b7 (diff) | |
download | gitlab-ce-66cfb901c0df6eb5741721e901b66fbe82e183ce.tar.gz |
Optimize SQL queries used in Groups::GroupMembersController#create27374-groups-groupmemberscontroller-create-is-slow-due-to-sql
The following optimizations were performed:
- Add new association to GroupMember and ProjectMember
This new association will allow us to check if a user is a member of a
Project or Group through a single query instead of two.
- Optimize retrieving of Members when adding multiple Users
Diffstat (limited to 'spec/support/group_members_shared_example.rb')
-rw-r--r-- | spec/support/group_members_shared_example.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/spec/support/group_members_shared_example.rb b/spec/support/group_members_shared_example.rb new file mode 100644 index 00000000000..547c83c7955 --- /dev/null +++ b/spec/support/group_members_shared_example.rb @@ -0,0 +1,27 @@ +RSpec.shared_examples 'members and requesters associations' do + describe '#members_and_requesters' do + it 'includes members and requesters' do + member_and_requester_user_ids = namespace.members_and_requesters.pluck(:user_id) + + expect(member_and_requester_user_ids).to include(requester.id, developer.id) + end + end + + describe '#members' do + it 'includes members and exclude requesters' do + member_user_ids = namespace.members.pluck(:user_id) + + expect(member_user_ids).to include(developer.id) + expect(member_user_ids).not_to include(requester.id) + end + end + + describe '#requesters' do + it 'does not include requesters' do + requester_user_ids = namespace.requesters.pluck(:user_id) + + expect(requester_user_ids).to include(requester.id) + expect(requester_user_ids).not_to include(developer.id) + end + end +end |