diff options
author | Bob Van Landuyt <bob@vanlanduyt.co> | 2017-11-30 16:26:08 +0300 |
---|---|---|
committer | Bob Van Landuyt <bob@vanlanduyt.co> | 2017-12-04 19:43:48 +0300 |
commit | 20f78421c82d626a3b43924146b7878fe4777ae8 (patch) | |
tree | b24c602574cb20c907a1ac228c8b00c104cbc836 /spec/models | |
parent | 07aaa59b1c28bc7be9fdd98c9334522f60306723 (diff) |
Cache the forks in a namespace in the RequestStore
On the `show` of a project that is part of a fork network. We check if
the user already created a fork of this project in their personal
namespace.
We do this in several places, so caching the result of this query in
the request store prevents us from repeating it.
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/namespace_spec.rb | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/spec/models/namespace_spec.rb b/spec/models/namespace_spec.rb index 90b768f595e..3817f20bfe7 100644 --- a/spec/models/namespace_spec.rb +++ b/spec/models/namespace_spec.rb @@ -531,7 +531,7 @@ describe Namespace do end end - describe '#has_forks_of?' do + describe '#find_fork_of?' do let(:project) { create(:project, :public) } let!(:forked_project) { fork_project(project, namespace.owner, namespace: namespace) } @@ -550,5 +550,13 @@ describe Namespace do expect(other_namespace.find_fork_of(project)).to eq(other_fork) end + + context 'with request store enabled', :request_store do + it 'only queries once' do + expect(project.fork_network).to receive(:find_forks_in).once.and_call_original + + 2.times { namespace.find_fork_of(project) } + end + end end end |