summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Kozono <mkozono@gmail.com>2017-11-22 12:19:25 -0800
committerMichael Kozono <mkozono@gmail.com>2017-12-01 15:26:41 -0800
commit7549d17f721b3be84f83c1dfa491d6a2ebf4ec28 (patch)
tree0fc26369756855fb658376342fa686ab9dc82561
parent67b58ffdc357bb94ec62d696b7b9a4aecf751c75 (diff)
downloadgitlab-ce-7549d17f721b3be84f83c1dfa491d6a2ebf4ec28.tar.gz
Refactor
-rw-r--r--lib/gitlab/background_migration/populate_untracked_uploads.rb23
-rw-r--r--spec/lib/gitlab/background_migration/populate_untracked_uploads_spec.rb6
2 files changed, 13 insertions, 16 deletions
diff --git a/lib/gitlab/background_migration/populate_untracked_uploads.rb b/lib/gitlab/background_migration/populate_untracked_uploads.rb
index 03e7b7b71cb..41dc5a3ed7e 100644
--- a/lib/gitlab/background_migration/populate_untracked_uploads.rb
+++ b/lib/gitlab/background_migration/populate_untracked_uploads.rb
@@ -51,28 +51,25 @@ module Gitlab
].freeze
def ensure_tracked!
- add_to_uploads unless in_uploads?
+ add_to_uploads_if_needed
delete
end
- def in_uploads?
+ def add_to_uploads_if_needed
# Even though we are checking relative paths, path is enough to
# uniquely identify uploads. There is no ambiguity between
# FileUploader paths and other Uploader paths because we use the /-/
# separator kind of like an escape character. Project full_path will
# never conflict with an upload path starting with "uploads/-/".
- Upload.exists?(path: upload_path)
- end
-
- def add_to_uploads
- Upload.create!(
- path: upload_path,
- uploader: uploader,
- model_type: model_type,
- model_id: model_id,
- size: file_size
- )
+ Upload.
+ where(path: upload_path).
+ first_or_create!(
+ uploader: uploader,
+ model_type: model_type,
+ model_id: model_id,
+ size: file_size
+ )
end
def upload_path
diff --git a/spec/lib/gitlab/background_migration/populate_untracked_uploads_spec.rb b/spec/lib/gitlab/background_migration/populate_untracked_uploads_spec.rb
index 04719d50f5c..72243ff98a4 100644
--- a/spec/lib/gitlab/background_migration/populate_untracked_uploads_spec.rb
+++ b/spec/lib/gitlab/background_migration/populate_untracked_uploads_spec.rb
@@ -166,7 +166,7 @@ describe Gitlab::BackgroundMigration::PopulateUntrackedUploads::UntrackedFile do
end
end
- describe '#add_to_uploads' do
+ describe '#add_to_uploads_if_needed' do
shared_examples_for 'add_to_uploads_non_markdown_files' do
let!(:expected_upload_attrs) { model.uploads.first.attributes.slice('path', 'uploader', 'size', 'checksum') }
let!(:untracked_file) { described_class.create!(path: expected_upload_attrs['path']) }
@@ -177,7 +177,7 @@ describe Gitlab::BackgroundMigration::PopulateUntrackedUploads::UntrackedFile do
it 'creates an Upload record' do
expect do
- untracked_file.add_to_uploads
+ untracked_file.add_to_uploads_if_needed
end.to change { model.reload.uploads.count }.from(0).to(1)
expect(model.uploads.first.attributes).to include(expected_upload_attrs)
@@ -246,7 +246,7 @@ describe Gitlab::BackgroundMigration::PopulateUntrackedUploads::UntrackedFile do
it 'creates an Upload record' do
expect do
- untracked_file.add_to_uploads
+ untracked_file.add_to_uploads_if_needed
end.to change { model.reload.uploads.count }.from(0).to(1)
expect(model.uploads.first.attributes).to include(@expected_upload_attrs)