diff options
author | Adam Niedzielski <adamsunday@gmail.com> | 2017-06-26 17:36:09 +0200 |
---|---|---|
committer | Adam Niedzielski <adamsunday@gmail.com> | 2017-06-26 17:36:09 +0200 |
commit | 0eb3d18c569cbae0f4b58284857c7a21972c4153 (patch) | |
tree | 50d70b3ce1fb007457cebff4dfcad44fafdbb7f5 /spec | |
parent | d4384dc154cb1e44c7b0a5cd802d48629f585fdb (diff) | |
download | gitlab-ce-34052-store-mr-ref-fetched-in-database.tar.gz |
Store merge request ref_fetched status in the database34052-store-mr-ref-fetched-in-database
Closes #34052
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 |