diff options
author | Rémy Coutable <remy@rymai.me> | 2016-06-16 09:37:55 +0000 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-06-16 09:37:55 +0000 |
commit | 5b4e99387a055b196fc89cb96b6c08e9d90e8404 (patch) | |
tree | fdd149bffc9defc8aff4927fad8667d315733bc4 /spec/models | |
parent | 1d20eefdcf5713505fe7829113a6a50c3ec6bea1 (diff) | |
parent | 84e2be5a5f3f020f1c57b013e82143ff90e48e58 (diff) | |
download | gitlab-ce-5b4e99387a055b196fc89cb96b6c08e9d90e8404.tar.gz |
Merge branch 'group-owners-association' into 'master'
Turn Group#owners into a has_many association
## What does this MR do?
This turns the regular method `Group#owners` into a `has_many` association.
## Are there points in the code the reviewer needs to double check?
As far as I can tell there's no way to do this without using an intermediate association, but perhaps I'm missing something. The reason an intermediate association is needed is because the supplied Proc is applied to the _final_ association (the one returning users), this means that when using a single `has_many` you can't filter out any intermediate rows (e.g. group members).
## Why was this MR needed?
This code being a regular method would prevent eager loading of the owners of a Group, turning it into a `has_many` association resolves this problem. This was discovered in !4410.
## What are the relevant issue numbers?
None.
## Does this MR meet the acceptance criteria?
- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- [x] ~~[Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)~~
- [x] ~~API support added~~
- [ ] Tests
- [x] Added for this feature/bug
- [ ] All builds are passing
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [ ] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)
See merge request !4676
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/group_spec.rb | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index ccdcb29f773..2c19aa3f67f 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -158,6 +158,18 @@ describe Group, models: true do it { expect(group.has_master?(@members[:requester])).to be_falsey } end + describe '#owners' do + let(:owner) { create(:user) } + let(:developer) { create(:user) } + + it 'returns the owners of a Group' do + group.add_owner(owner) + group.add_developer(developer) + + expect(group.owners).to eq([owner]) + end + end + def setup_group_members(group) members = { owner: create(:user), |