summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorSean McGivern <sean@mcgivern.me.uk>2018-11-01 10:33:27 +0000
committerSean McGivern <sean@mcgivern.me.uk>2018-11-01 10:33:27 +0000
commit1c50200b9aba86d2ba66b81dee7886a51dc38409 (patch)
tree89bdb19c96a801386f886fcb27eff1e43fb4371e /spec
parent1431ccc010918f34a4834477261b468323bbd939 (diff)
parentd4ef4ad752bf05758351bd0b8761566e40ab0e8e (diff)
downloadgitlab-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.rb14
-rw-r--r--spec/models/project_spec.rb4
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