diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2018-11-01 10:33:27 +0000 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2018-11-01 10:33:27 +0000 |
commit | 1c50200b9aba86d2ba66b81dee7886a51dc38409 (patch) | |
tree | 89bdb19c96a801386f886fcb27eff1e43fb4371e /spec | |
parent | 1431ccc010918f34a4834477261b468323bbd939 (diff) | |
parent | d4ef4ad752bf05758351bd0b8761566e40ab0e8e (diff) | |
download | gitlab-ce-1c50200b9aba86d2ba66b81dee7886a51dc38409.tar.gz |
Merge branch 'sh-optimize-merge-request-project-lookup' into 'master'
Reduce SQL queries needed to load open merge requests
See merge request gitlab-org/gitlab-ce!22709
Diffstat (limited to 'spec')
-rw-r--r-- | spec/models/merge_request_spec.rb | 14 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 4 |
2 files changed, 18 insertions, 0 deletions
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index c8943f2d86f..85a4ebac66c 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -13,6 +13,20 @@ describe MergeRequest do it { is_expected.to belong_to(:merge_user).class_name("User") } it { is_expected.to belong_to(:assignee) } it { is_expected.to have_many(:merge_request_diffs) } + + context 'for forks' do + let!(:project) { create(:project) } + let!(:fork) { fork_project(project) } + let!(:merge_request) { create(:merge_request, target_project: project, source_project: fork) } + + it 'does not load another project due to inverse relationship' do + expect(project.merge_requests.first.target_project.object_id).to eq(project.object_id) + end + + it 'finds the associated merge request' do + expect(project.merge_requests.find(merge_request.id)).to eq(merge_request) + end + end end describe '#squash_in_progress?' do diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index e66838edd1a..83b3f308ec3 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -88,6 +88,10 @@ describe Project do it { is_expected.to have_many(:project_deploy_tokens) } it { is_expected.to have_many(:deploy_tokens).through(:project_deploy_tokens) } + it 'has an inverse relationship with merge requests' do + expect(described_class.reflect_on_association(:merge_requests).has_inverse?).to eq(:target_project) + end + context 'after initialized' do it "has a project_feature" do expect(described_class.new.project_feature).to be_present |