diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2017-06-27 12:38:58 +0300 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2017-06-27 12:38:58 +0300 |
commit | eacce60b1744775f4bb4c7dccfe29912d70b9984 (patch) | |
tree | 28524d6b52a9b6fa7aa1bfb6b13b6f93a36328bd /spec | |
parent | efc5fbfd77f086fc39553e3b03e52e25e0eec24a (diff) | |
parent | 0eb3d18c569cbae0f4b58284857c7a21972c4153 (diff) |
Merge branch '34052-store-mr-ref-fetched-in-database' into 'master'
Store merge request ref_fetched status in the database
Closes #34052
See merge request !12424
Diffstat (limited to 'spec')
-rw-r--r-- | spec/lib/gitlab/import_export/fork_spec.rb | 4 | ||||
-rw-r--r-- | spec/models/merge_request_spec.rb | 36 |
2 files changed, 39 insertions, 1 deletions
diff --git a/spec/lib/gitlab/import_export/fork_spec.rb b/spec/lib/gitlab/import_export/fork_spec.rb index 42f3fc59f04..70796781532 100644 --- a/spec/lib/gitlab/import_export/fork_spec.rb +++ b/spec/lib/gitlab/import_export/fork_spec.rb @@ -44,6 +44,8 @@ describe 'forked project import', services: true do end it 'can access the MR' do - expect(project.merge_requests.first.ensure_ref_fetched.first).to include('refs/merge-requests/1/head') + project.merge_requests.first.ensure_ref_fetched + + expect(project.repository.ref_exists?('refs/merge-requests/1/head')).to be_truthy end end diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index 1240c9745e2..bb5273074a2 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -1574,4 +1574,40 @@ describe MergeRequest, models: true do end end end + + describe '#fetch_ref' do + it 'sets "ref_fetched" flag to true' do + subject.update!(ref_fetched: nil) + + subject.fetch_ref + + expect(subject.reload.ref_fetched).to be_truthy + end + end + + describe '#ref_fetched?' do + it 'does not perform git operation when value is cached' do + subject.ref_fetched = true + + expect_any_instance_of(Repository).not_to receive(:ref_exists?) + expect(subject.ref_fetched?).to be_truthy + end + + it 'caches the value when ref exists but value is not cached' do + subject.update!(ref_fetched: nil) + allow_any_instance_of(Repository).to receive(:ref_exists?) + .and_return(true) + + expect(subject.ref_fetched?).to be_truthy + expect(subject.reload.ref_fetched).to be_truthy + end + + it 'returns false when ref does not exist' do + subject.update!(ref_fetched: nil) + allow_any_instance_of(Repository).to receive(:ref_exists?) + .and_return(false) + + expect(subject.ref_fetched?).to be_falsey + end + end end |