Skip to content

Commit 1b90974

Browse files
committed
fix moving attachments specs, fix gov_document moving attachments
1 parent 83fcc11 commit 1b90974

File tree

4 files changed

+31
-16
lines changed

4 files changed

+31
-16
lines changed

app/models/concerns/moveable_attachment.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ module MoveableAttachment
1212
return if uploader.nil?
1313
return if uploader.file.nil?
1414

15-
from = File.dirname(uploader.file.file.gsub("/public/", "/private/"))
16-
to = File.dirname(from.gsub("/private/", "/public/"))
15+
public_uploads = uploader.public_root.join("uploads").to_s
16+
private_uploads = uploader.private_root.join("uploads").to_s
17+
from = File.dirname(uploader.file.file.gsub(public_uploads, private_uploads))
18+
to = File.dirname(from.gsub(private_uploads, public_uploads))
1719
move_attachment(from, to)
1820
end
1921

@@ -22,8 +24,10 @@ module MoveableAttachment
2224
return if uploader.nil?
2325
return if uploader.file.nil?
2426

25-
from = File.dirname(uploader.file.file.gsub("/private/", "/public/"))
26-
to = File.dirname(from.gsub("/public/", "/private/"))
27+
public_uploads = uploader.public_root.join("uploads").to_s
28+
private_uploads = uploader.private_root.join("uploads").to_s
29+
from = File.dirname(uploader.file.file.gsub(private_uploads, public_uploads))
30+
to = File.dirname(from.gsub(public_uploads, private_uploads))
2731
move_attachment(from, to)
2832
end
2933
end

app/models/gov_document.rb

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,8 @@ def has_data?
8080
end
8181

8282
def reset_to_not_provided!
83-
remove_attachment!
8483
update!(
85-
status: OperatorDocument.statuses[:doc_not_provided],
84+
status: OperatorDocument.statuses[:doc_not_provided], attachment: nil,
8685
expire_date: nil, start_date: nil, uploaded_by: nil, user_id: nil,
8786
value: nil, link: nil
8887
)
@@ -102,8 +101,8 @@ def move_previous_attachment_to_private_directory
102101
previous_attachment_filename = previous_changes[:attachment][0]
103102
return if previous_attachment_filename.blank?
104103

105-
from = File.join(attachment.root, attachment.store_dir, previous_attachment_filename)
106-
to = from.gsub("/public/", "/private/")
104+
from = File.join(attachment.public_root, attachment.store_dir, previous_attachment_filename)
105+
to = File.join(attachment.private_root, attachment.store_dir, previous_attachment_filename)
107106
FileUtils.makedirs(File.dirname(to))
108107
system "mv #{Shellwords.escape(from)} #{Shellwords.escape(to)}"
109108
end
@@ -113,9 +112,9 @@ def move_attachment_to_public_directory
113112
attachment_attr = self[:attachment]
114113
return if attachment_attr.nil?
115114

116-
to = File.join(attachment.root, attachment.store_dir, attachment_attr)
117-
from = to.gsub("/public/", "/private/")
118-
FileUtils.makedirs(File.dirname(from))
115+
from = File.join(attachment.private_root, attachment.store_dir, attachment_attr)
116+
to = File.join(attachment.public_root, attachment.store_dir, attachment_attr)
117+
FileUtils.makedirs(File.dirname(to))
119118
system "mv #{Shellwords.escape(from)} #{Shellwords.escape(to)}"
120119
end
121120

app/uploaders/application_uploader.rb

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@ class ApplicationUploader < CarrierWave::Uploader::Base
44
storage :file
55

66
def root
7-
result = Rails.root
8-
result = Rails.root.join("private") if private_upload?
9-
result = result.to_s.gsub(Rails.root.to_s, Rails.root.join("tmp").to_s) if Rails.env.test?
10-
result
7+
return private_root if private_upload?
8+
9+
public_root
1110
end
1211

1312
def cache_dir
@@ -34,6 +33,18 @@ def private_upload?
3433
false
3534
end
3635

36+
def public_root
37+
return Rails.root.join("tmp") if Rails.env.test?
38+
39+
Rails.root
40+
end
41+
42+
def private_root
43+
return Rails.root.join("tmp", "private") if Rails.env.test?
44+
45+
Rails.root.join("private")
46+
end
47+
3748
def original_filename
3849
if file.present?
3950
file.filename

spec/models/gov_document_spec.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
it "moves previous attachment to private folder" do
3030
expect(document.attachment.file.file).to match(Rails.root.join("tmp/uploads").to_s)
3131
expect(document.attachment.file.exists?).to be(true)
32-
document.remove_attachment!
32+
document.attachment = nil
3333
document.save!
3434
document.reload
3535
expect(document.read_attribute(:attachment)).to be_nil
@@ -117,6 +117,7 @@
117117

118118
it "moves attachment back to public directory" do
119119
expect(document.attachment.file.file).to match("/private/uploads")
120+
expect(document.attachment.file.exists?).to be(true)
120121
document.restore
121122
reloaded_doc = GovDocument.find(document.id) # as reload does not reload paper_trail.live? weird
122123
expect(reloaded_doc.attachment.file.file).to match(Rails.root.join("tmp/uploads").to_s)

0 commit comments

Comments
 (0)