Skip to content

Commit ea7cb82

Browse files
Merge pull request #1839 from psu-libraries/1828-accessible-file-naming
1828 accessible file naming
2 parents 2bea430 + 3cc03d3 commit ea7cb82

File tree

2 files changed

+34
-12
lines changed

2 files changed

+34
-12
lines changed

app/services/build_auto_remediated_work_version.rb

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class NotNewestReleaseError < StandardError; end
77

88
def self.call(file_resource, remediated_file_url)
99
wv_being_remediated = file_resource.latest_remediation_work_version_candidate
10-
10+
original_filename = file_resource.file_data['metadata']['filename']
1111
# In the rare case a new work version is published after the remediation
1212
# job started, we stop the creation of a new remediated version here.
1313
unless wv_being_remediated.latest_published_version?
@@ -30,11 +30,7 @@ def self.call(file_resource, remediated_file_url)
3030
fvm_to_destroy&.destroy!
3131

3232
replacement_tempfile = Down.download(remediated_file_url)
33-
built_work_version.file_resources.create!(
34-
file: replacement_tempfile,
35-
auto_remediated_version: true
36-
)
37-
33+
build_file_resource(built_work_version, replacement_tempfile, original_filename)
3834
if built_work_version.has_remaining_auto_remediation_jobs?
3935
built_work_version.save!
4036
else
@@ -46,7 +42,17 @@ def self.call(file_resource, remediated_file_url)
4642
end
4743
end
4844

49-
def self.on_publish(built_work_version)
45+
private_class_method def self.build_file_resource(work_version, replacement_tempfile, original_filename)
46+
new_resource = work_version.file_resources.create!(
47+
file: replacement_tempfile,
48+
auto_remediated_version: true
49+
)
50+
51+
new_resource.file_data['metadata']['filename'] = "ACCESSIBLE_VERSION_#{original_filename}"
52+
new_resource.save!
53+
end
54+
55+
private_class_method def self.on_publish(built_work_version)
5056
built_work_version.publish!
5157
lib_answers = LibanswersApiService.new
5258
lib_answers.admin_create_ticket(built_work_version.work.id, 'work_remediation')

spec/services/build_auto_remediated_work_version_spec.rb

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,18 @@
5050
context 'when no auto-remediated work version exists after the one being remediated' do
5151
context 'when no remaining remediation jobs' do
5252
it 'builds a new work version, attaches the remediated file, and publishes' do
53-
allow(Down).to receive(:download).with(remediated_url).and_return(Tempfile.new('remediated'))
53+
allow(Down).to receive(:download).with(remediated_url).and_return(Tempfile.new('COMPLIANT'))
5454
wv_count_before = WorkVersion.count
5555

5656
result = described_class.call(file_resource, remediated_url)
5757
expect(WorkVersion.count).to eq(wv_count_before + 1)
5858
expect(FileResource).to exist(file_resource.id)
5959
expect(FileVersionMembership.find_by(work_version: result, file_resource: file_resource)).to be_nil
60-
expect(WorkVersion.find(result.id).file_resources.where(auto_remediated_version: true).count).to eq(1)
60+
remediated_file_resource = WorkVersion.find(result.id).file_resources.where(auto_remediated_version: true)
61+
expect(remediated_file_resource.count).to eq(1)
62+
expect(remediated_file_resource.first.file_data['metadata']['filename']).to eq(
63+
"ACCESSIBLE_VERSION_#{FileResource.find(file_resource.id).file_data['metadata']['filename']}"
64+
)
6165
expect(result.external_app).to eq(ExternalApp.pdf_accessibility_api)
6266
expect(result).to be_published
6367
expect(AutoRemediationNotifications)
@@ -88,7 +92,11 @@
8892
expect(WorkVersion.count).to eq(wv_count_before + 1)
8993
expect(FileResource).to exist(file_resource.id)
9094
expect(FileVersionMembership.find_by(work_version: result, file_resource: file_resource)).to be_nil
91-
expect(WorkVersion.find(result.id).file_resources.where(auto_remediated_version: true).count).to eq(1)
95+
remediated_file_resource = WorkVersion.find(result.id).file_resources.where(auto_remediated_version: true)
96+
expect(remediated_file_resource.count).to eq(1)
97+
expect(remediated_file_resource.first.file_data['metadata']['filename']).to eq(
98+
"ACCESSIBLE_VERSION_#{FileResource.find(file_resource.id).file_data['metadata']['filename']}"
99+
)
92100
expect(result.external_app).to eq(ExternalApp.pdf_accessibility_api)
93101
expect(result).to be_draft
94102
expect(AutoRemediationNotifications)
@@ -122,7 +130,11 @@
122130
expect(WorkVersion.count).to eq(wv_count_before)
123131
expect(FileResource).to exist(file_resource.id)
124132
expect(FileVersionMembership.find_by(work_version: result, file_resource: file_resource)).to be_nil
125-
expect(WorkVersion.find(result.id).file_resources.where(auto_remediated_version: true).count).to eq(1)
133+
remediated_file_resource = WorkVersion.find(result.id).file_resources.where(auto_remediated_version: true)
134+
expect(remediated_file_resource.count).to eq(1)
135+
expect(remediated_file_resource.first.file_data['metadata']['filename']).to eq(
136+
"ACCESSIBLE_VERSION_#{FileResource.find(file_resource.id).file_data['metadata']['filename']}"
137+
)
126138
expect(result.external_app).to eq(ExternalApp.pdf_accessibility_api)
127139
expect(result).to be_published
128140
expect(AutoRemediationNotifications)
@@ -153,7 +165,11 @@
153165
expect(WorkVersion.count).to eq(wv_count_before)
154166
expect(FileResource).to exist(file_resource.id)
155167
expect(FileVersionMembership.find_by(work_version: result, file_resource: file_resource)).to be_nil
156-
expect(WorkVersion.find(result.id).file_resources.where(auto_remediated_version: true).count).to eq(1)
168+
remediated_file_resource = WorkVersion.find(result.id).file_resources.where(auto_remediated_version: true)
169+
expect(remediated_file_resource.count).to eq(1)
170+
expect(remediated_file_resource.first.file_data['metadata']['filename']).to eq(
171+
"ACCESSIBLE_VERSION_#{FileResource.find(file_resource.id).file_data['metadata']['filename']}"
172+
)
157173
expect(result.external_app).to eq(ExternalApp.pdf_accessibility_api)
158174
expect(result).to be_draft
159175
expect(AutoRemediationNotifications)

0 commit comments

Comments
 (0)